setForeground() 不适用于 JTextArea
setForeground() not working on JTextArea
我有以下方法:
static void display() {
String data = "";
try {
input = new Scanner(file);
while (input.hasNext()) {
data += input.nextLine() + "\n";
}
frame = new JFrame();
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
text = new JTextArea();
text.setForeground(Color.red);
sp = new JScrollPane(text);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setOpaque(true);
text.setVisible(true);
text.setEnabled(false);
text.setSize(200, 200);
text.setText(data);
sp.setVisible(true);
frame.add(sp);
frame.validate();
} catch (FileNotFoundException ex) {
Logger.getLogger(Score.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args){
display();
}
现在当我 运行 文件时,我看到了这个:
Screenshot showing how the text is a weird blue instead of red
尽可能远离指定的Color.red。
我做错了什么?为什么前景色没有变成红色?
所以,您的基本问题是 text.setEnabled(false)
,这将改变文本颜色。使用 setEditable
代替
JFrame frame = new JFrame();
//frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
JTextArea text = new JTextArea();
text.setForeground(Color.red);
JScrollPane sp = new JScrollPane(text);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setEditable(false);
//text.setEnabled(false);
//text.setSize(200, 200);
text.setText("Happy bunies");
frame.add(sp);
//sp.setVisible(true);
frame.setVisible(true);
Swing 组件已经可见,因此需要继续对其调用 setVisible(true)
。
将组件添加到 window 时,请在使其可见之前添加它们,这将使您不必再次重新验证容器。
在组件上调用 setSize
是无关紧要的,它们在布局管理器 API 的控制之下。如果要影响 JTextArea
的大小,请使用 setRows
和 setColumns
方法(也通过构造函数)。
我还考虑在框架上使用 pack
而不是 setSize
- 但在添加所有组件后再做
我有以下方法:
static void display() {
String data = "";
try {
input = new Scanner(file);
while (input.hasNext()) {
data += input.nextLine() + "\n";
}
frame = new JFrame();
frame.setVisible(true);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
text = new JTextArea();
text.setForeground(Color.red);
sp = new JScrollPane(text);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setOpaque(true);
text.setVisible(true);
text.setEnabled(false);
text.setSize(200, 200);
text.setText(data);
sp.setVisible(true);
frame.add(sp);
frame.validate();
} catch (FileNotFoundException ex) {
Logger.getLogger(Score.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args){
display();
}
现在当我 运行 文件时,我看到了这个:
Screenshot showing how the text is a weird blue instead of red
尽可能远离指定的Color.red。
我做错了什么?为什么前景色没有变成红色?
所以,您的基本问题是 text.setEnabled(false)
,这将改变文本颜色。使用 setEditable
代替
JFrame frame = new JFrame();
//frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
JTextArea text = new JTextArea();
text.setForeground(Color.red);
JScrollPane sp = new JScrollPane(text);
text.setFont(new Font("Arial", Font.PLAIN, 20));
text.setEditable(false);
//text.setEnabled(false);
//text.setSize(200, 200);
text.setText("Happy bunies");
frame.add(sp);
//sp.setVisible(true);
frame.setVisible(true);
Swing 组件已经可见,因此需要继续对其调用 setVisible(true)
。
将组件添加到 window 时,请在使其可见之前添加它们,这将使您不必再次重新验证容器。
在组件上调用 setSize
是无关紧要的,它们在布局管理器 API 的控制之下。如果要影响 JTextArea
的大小,请使用 setRows
和 setColumns
方法(也通过构造函数)。
我还考虑在框架上使用 pack
而不是 setSize
- 但在添加所有组件后再做