2014-09-23 22 views
-1

我正在尝试更改文本区域中使用单选按钮的字体大小以及字体样式的复选框中的文本。我不知道如何在文本区域显示文本,请看最后两行。显示文本区域中的选定选项

package assignment3; 
import java.awt.Font; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 
import javax.swing.ButtonGroup; 
import javax.swing.JCheckBox; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 
import javax.swing.JTextArea; 
public class Assignment3 extends JFrame implements ItemListener { 
    JPanel panel; 
    JTextArea area; 
    JRadioButton small; 
    JRadioButton medium; 
    JRadioButton large; 
    ButtonGroup btngrp; 
    JCheckBox bold; 
    JCheckBox italic; 
    JCheckBox underline; 
    Font smalla; 
    Font med; 
    Font la; 
    Font b; 
    Font i; 
    Font u; 
    public Assignment3() { 
    setTitle("My Work of text"); 
    setSize(400, 400); 
    panel = new JPanel(); 
    area = new JTextArea(5, 20); 
    btngrp = new ButtonGroup(); 
    btngrp.add(small); 
    btngrp.add(medium); 
    btngrp.add(large); 
    small = new JRadioButton("Small"); 
    medium = new JRadioButton("Medium"); 
    large = new JRadioButton("Large"); 
    bold = new JCheckBox("Bold"); 
    italic = new JCheckBox("Italic"); 
    underline = new JCheckBox("Underline"); 
    smalla = new Font("Rockwell", Font.PLAIN, 12); 
    med = new Font("Rockwell", Font.PLAIN, 15); 
    la = new Font("Rockwell", Font.PLAIN, 20); 
    b = new Font("Rockwell", Font.BOLD, 12); 
    i = new Font("Rockwell", Font.ITALIC, 15); 
    u = new Font("Rockwell", Font.ROMAN_BASELINE, 20); 
    add(panel); 
    panel.add(area); 
    panel.add(small); 
    panel.add(medium); 
    panel.add(large); 
    panel.add(bold); 
    panel.add(italic); 
    panel.add(underline); 
    small.addItemListener(this); 
    medium.addItemListener(this); 
    large.addItemListener(this); 
    bold.addItemListener(this); 
    underline.addItemListener(this); 
    italic.addItemListener(this); 
    } 
    public static void main(String[] args) { 
    new Assignment3().setVisible(true); 
    } 
    public void itemStateChanged(ItemEvent ie) { 
    int style = 0; 
    int size = 12; 
    if (small.isSelected()) { 
     size = 12; /*area.setFont(smalla);*/ 
    } else if (medium.isSelected()) { 
     size = 14; /*area.setFont(med);*/ 
    } else if (large.isSelected()) { 
     size = 20; /*area.setFont(la);*/ 
    } 
    if (bold.isSelected()) { 
     style += Font.BOLD 
     /*area.setFont(new Font(Font.SANS_SERIF, style, 
     style))*/ 
     ; 
    } 
    if (italic.isSelected()) { 
     style += Font.ITALIC /*area.setFont(new Font(Font.SANS_SERIF, style, style))*/ ; 
    } 
    if (underline.isSelected()) { 
     style += Font.CENTER_BASELINE /*area.setFont(new Font(Font.SANS_SERIF, style, style))*/ ; 
    } 
    area.setFont(new Font(size + style); area.setFont(style + size); 
    } 
    } 
+0

的目的是改变文本区域的字体样式 – 2014-09-23 20:28:08

回答

0

如果通过JavaDocs for Font你会看到...

看看

风格 - 样式常数字体风格参数是 整数位掩码可以是PLAIN,或BOLD和/或 ITALIC(例如,斜体或BOLD |斜体)的按位的结合。如果样式参数 不符合预期的整数位掩码之一,则 样式设置为PLAIN。

这意味着你不能简单的“加”风格常量在一起,你需要使用逐位工会...

int style = 0; 
int size = 12; 
if (small.isSelected()){size=12;/*area.setFont(smalla);*/} 
else if (medium.isSelected()){size=14;/*area.setFont(med);*/} 
else if (large.isSelected()){size=20;/*area.setFont(la);*/} 
if (bold.isSelected()){ 
    style |=Font.BOLD /*area.setFont(new Font(Font.SANS_SERIF, style, style))*/; 
} 
if (italic.isSelected()){ 
    style |=Font.ITALIC /area.setFont(new Font(Font.SANS_SERIF, style, style))/; 
} 
if (underline.isSelected()){ 
    style |=Font.CENTER_BASELINE /area.setFont(new Font(Font.SANS_SERIF, style, style))/; 
} 

如果通过读的JavaDoc,你也将看到,字体需要3个参数的构造函数,namestylesize

这意味着有没有办法,这可能是工作...

area.setFont(new Font(size + style); 
area.setFont(style+size); 

现在,你并不需要创建字体的新实例,您可以使用现有的实例,并对其进行更改以您的需求

area.setFont(area.getFont().deriveFont(style, size)); 

...这样简短的回答是,读的JavaDoc时卡住了......

0

为了把一个文本在JTextArea可以使用的append()或的setText()方法:

JTextArea myTextArea = new JTextArea(); 
... 
myTextArea.setText("What a happy day"); // replaces everything inside the compenent 
... 
myTextArea.append(" and i'm gonna enjoy it.\n"); // Append the text at the end 
+0

谢谢im新的java和我不了解你。 – 2014-09-23 20:15:38

+0

area.append(style + size);这是你的意思吗? – 2014-09-23 20:15:53

+0

对不起,但我没有得到你想要的。所以你有一些单选按钮,当你选择一个时,你希望它改变风格和字体? – AndreDuarte 2014-09-23 20:24:49