我正在尝试使用字体大小的单选按钮更改文本区域中的文本,并选中字体样式的复选框。我不知道如何在文本区域显示文本,请参阅最后两行。
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 :(得分: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
答案 1 :(得分:0)
如果你仔细查看JavaDocs for Font
,你会看到......
style - Font的样式常量样式参数是一个 整数位掩码,可以是PLAIN,也可以是BOLD和/或的逐位联合 ITALIC(例如,ITALIC或BOLD | ITALIC)。如果是样式参数 不符合预期的整数位掩码之一 style设置为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))/;
}
如果您阅读了JavaDocs,您还会看到Font的构造函数需要3个参数name
,style
,size
这意味着这无法发挥作用......
area.setFont(new Font(size + style);
area.setFont(style+size);
现在,您不需要创建新的Font实例,您可以使用现有实例并根据您的要求进行更改
area.setFont(area.getFont().deriveFont(style, size));
...所以简短的回答是,在卡住时阅读JavaDocs ......