I'm trying to write a method that changes a text size inside of the JtextArea.
JTextArea editorPanel;
Font editorFont;
public void setSize( int size ) {
editorPanel.setFont( new Font( editorFont.getName(), editorFont.getStyle(), size ) );
}
I have an inner-class ActionListener on another class which look like;
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 );
}
}
I have implemented this actionlistener to my JComboBox, so that when I choose a new "size" from my ComboBox the text size of the JTextArea should be increased or decreased depending on the choice. Which method or implementation I can use to solve this problem?
解决方案
The easiest way is to derive a new Font based on the existing Font:
JComboBox cb = (JComboBox) e.getSource();
Integer itemSize = (Integer) cb.getSelectedItem();
float fontSize = itemSize.IntValue();
Font font = editorPanel.getFont();
editorPanel.setFont( font.deriveFont( fontSize ) );
Note in this case you would add Integer values to the combo box, not String values so there is no need to parse the selected item.