2016-09-11 4 views
0

У меня есть два RadioButton выбрать либо Italic или простой стиль для TextArea. (Они добавляются в ButtonGroup так только один может быть выбраны)TextArea стиль текста не меняется на равнину из наклонных в Java

У меня есть actionPerformed Способ

public void actionPerformed(ActionEvent ae) { 
    Font currentFont = taText.getFont(); //taText is TextArea 
    Font fontToSet; 
    String command = ae.getActionCommand(); 
    if (command.equals("Italic")) { 
     System.out.println("Italic clicked"); 
     fontToSet = new Font(currentFont.getFontName(),Font.ITALIC,currentFont.getSize()); 
    } 
    else { 
     System.out.println("Plain clicked"); 
     fontToSet = new Font(currentFont.getFontName(), Font.PLAIN, currentFont.getSize()); 
    } 
    taText.setFont(fontToSet); 
} 

проблема в том, что, когда я нажимаю на «курсив», текст становится наклонным, но при нажатии Plain, текст не становится простым. Тем не менее сообщение Plain Clicked отображается в командной строке.

В чем проблема?

+0

Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Correct Example] (http://www.sscce.org/). –

+0

@AndrewThompson Хорошо, я сделаю это –

ответ

2

изменить код

public void actionPerformed(ActionEvent ae) { 
    Font currentFont = taText.getFont(); //taText is TextArea 
    Font fontToSet; 
    String command = ae.getActionCommand(); 
    if (command.equals("Italic")) { 
     System.out.println("Italic clicked"); 
     fontToSet =currentFont .deriveFont(Font.ITALIC); 
    else { 
     System.out.println("Plain clicked"); 
     fontToSet = currentFont .deriveFont(Font.PLAIN); 
    } 
    taText.setFont(fontToSet); 
} 

проблема, getFontName() вызывает Font2D, чтобы получить имя и возвращает значение, основанное на текущих прикладных стилей, но GetName() будет возвращать один и тот же шрифт имя. но лучше использовать deriveFont();