【发布时间】:2020-06-22 10:10:50
【问题描述】:
我也想这样做:
代码如下:
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
class QuizGUI {
public static void main(String args[]) {
JFrame frm = new JFrame("Simple Quiz");
frm.setLayout(null);
JLabel lbl1 = new JLabel("Which Animal can fly?");
JLabel lbl2 = new JLabel("You have selected: ");
JLabel lblOutput = new JLabel();
JRadioButton rCat = new JRadioButton("Cat");
JRadioButton rBird = new JRadioButton("Bird");
JRadioButton rFish = new JRadioButton("Fish");
ButtonGroup bg = new ButtonGroup();
bg.add(rCat);
bg.add(rBird);
bg.add(rFish);
lbl1.setBounds(0, 0, 200, 20);
rCat.setBounds(0, 20, 100, 20);
rBird.setBounds(0, 40, 100, 20);
rFish.setBounds(0, 60, 100, 20);
lbl2.setBounds(0, 80, 200, 20);
lblOutput.setBounds(0, 105, 200, 20);
frm.add(lbl1);
frm.add(rCat);
frm.add(rBird);
frm.add(rFish);
frm.add(lbl2);
frm.add(lblOutput);
rCat.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (rCat.isSelected()) {
lblOutput.setText("Cat can't fly, Try again.");
}
}
});
rBird.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (rBird.isSelected()) {
lblOutput.setText("Bird can fly, Excellent.");
}
}
});
rFish.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (rFish.isSelected()) {
lblOutput.setText("Cat can't fly, Try again.");
}
}
});
frm.setVisible(true);
frm.setSize(350, 200);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
问题是,我想要像图像一样的窗口颜色,背景是白色,选择的背景是灰色。
我试过frame.setBackground,但没有用。
我为其他示例尝试了一些代码,颜色为白色。我不知道为什么窗口都是这样的灰色:
【问题讨论】:
-
每个容器(通常是
JPanel)都可以有不同的背景颜色,因此请将它们组合起来。 -
在更广泛的说明:
frm.setLayout(null);1) 如果需要,为框架设置内容窗格,但不要弄乱现有的内容窗格(这是我的建议)。在框架上调用的某些方法会自动传递到默认内容窗格,而其他方法则不会。 2) Java GUI 必须在不同的语言环境中使用不同的 PLAF 在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them 以及 .. -
.. white space 的布局内边距和边框。
-
“我试过
frame.setBackground,但没有用。” 嗯……“在框架上调用某些方法会自动传递给默认内容窗格,其他人不会。” 我想你刚刚发现了一个不会。该方法可能会传递到底层框架,该框架正被内容窗格覆盖。