2010-05-08 5 views
1

Как рисовать строку на Java (используя Graphics2d) в моноширинном режиме? У меня есть шрифт, похожий на ЖК-экран, и я хочу нарисовать что-то вроде ярлыка LCD.Java monospace draw string

Я использую шрифт Digital 7 Mono.

Знаете ли вы, где я могу найти другой шрифт, который будет моноширинным и lcd (я хочу набирать только цифры)?

+1

Добро пожаловать в SO, javaAmator! К сожалению, даже если вы делаете проект на Java, этот вопрос не подходит для SO, потому что действие поиска шрифта не связано с программированием. Я предлагаю вам обратиться к http://www.doctype.com/, где есть более ориентированные на дизайн люди. Если у вас есть вопросы о таких вещах, как алгоритмы, синтаксис языка программирования или ошибки в коде, мы будем рады помочь! – Pops

+0

@Lord Torgamus: Я согласен с вашим комментарием, но я предложил ответ на вопрос рисования. Извините, если я предобрал ваше предложение, чтобы помочь. Обычно я придерживаюсь семейств шрифтов, определенных платформой, поэтому я бы приветствовал любые дополнения или исправления о том, как выбирать альтернативные шрифты. – trashgod

ответ

2

Как рисовать строку на Java (с использованием Graphics2d) в моноширинном режиме?

Важным методом, необходимым для визуализации текста, является drawString(), как описано ниже. Нет «моноширинного режима», как такового, но даже пропорционально разнесенные шрифты обычно используют постоянную ширину для цифровых символов.

private static final Font font = new Font("Monospaced", Font.PLAIN, 32); 
private static final String s = "12:34"; 
... 
@Override 
protected void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setFont(font); 
    int xx = this.getWidth(); 
    int yy = this.getHeight(); 
    int w2 = g.getFontMetrics().stringWidth(s)/2; 
    int h2 = g.getFontMetrics().getDescent(); 
    g.setColor(Color.green); 
    g.drawString(s, xx/2 - w2, yy/2 + h2); 
} 

Там есть полный пример here, и вы можете продлить подходящий JComponent контролировать позиционирование с помощью менеджера компоновки, как видно here.