Как изменить размер шрифта содержимого JTextArea?

Я пытаюсь написать метод, который изменяет размер текста внутри JtextArea.

JTextArea editorPanel;
Font editorFont;

public void setSize( int size ) {
      editorPanel.setFont( new Font( editorFont.getName(), editorFont.getStyle(), size ) );
 }

У меня есть внутренний класс ActionListener в другом классе, который выглядит так:

class SizeListener implements ActionListener {

      String size;

      public void actionPerformed(ActionEvent e) {
         JComboBox cb = (JComboBox) e.getSource();
         size = (String) cb.getSelectedItem();
         int i = Integer.parseInt( size );
         displayFont = display.getEditorFont();
         display.setSize( i );
      }
   }

Я внедрил этот прослушиватель действий в свой JComboBox, так что, когда я выбираю новый «размер» из моего ComboBox, размер текста JTextArea должен увеличиваться или уменьшаться в зависимости от выбора. Какой метод или реализацию я могу использовать для решения этой проблемы?


person Javid M.    schedule 28.04.2020    source источник


Ответы (1)


Самый простой способ — получить новый Font на основе существующего Font:

JComboBox cb = (JComboBox) e.getSource();
Integer itemSize = (Integer) cb.getSelectedItem();
float fontSize = itemSize.IntValue();
Font font = editorPanel.getFont();
editorPanel.setFont( font.deriveFont( fontSize ) );

Обратите внимание, что в этом случае вы должны добавить в поле со списком целочисленные значения, а не строковые значения, поэтому нет необходимости анализировать выбранный элемент.

person camickr    schedule 28.04.2020