我已经尝试了 this 中的所有内容帖子,但我似乎无法更改背景颜色。我做错了什么,以至于它不会改变背景颜色?
调用DrawGui的主类:
public class JavaApp {
public static void main(String[] args) {
try {
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
} catch (ClassNotFoundException ex) {
Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
} catch (UnsupportedLookAndFeelException ex) {
Logger.getLogger(JavaApp.class.getName()).log(Level.SEVERE, null, ex);
}
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
DrawGui.createAndShowGUI("");
}
});
}
}
Gui 构建类:
public class DrawGui extends JFrame {
public DrawGui(String name) {
super(name);
setResizable(false);
}
public static void createAndShowGUI(String type) {
DrawGui frame = new DrawGui("Java App");
frame.getContentPane().setBackground(Color.RED);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.defaultMenu(frame.getContentPane());
frame.pack();
frame.setVisible(true);
}
public void defaultMenu(final Container pane) {
JPanel infoBox = new JPanel();
infoBox.setLayout(new GridLayout(1,2));
infoBox.add(new Label("Benutzer: " + GlobalValues.USERNAME));
infoBox.add(new Label("Version: " + GlobalValues.VERSION_NUMBER));
pane.add(infoBox, BorderLayout.SOUTH);
}
}
最佳答案
您的代码现在有两个问题。首先,您添加到内容 Pane 的 JPanel
是不透明的,这意味着它将遮挡 JFrame
的背景。因此,要么设置它的颜色,要么使用 setOpaque
false。
如果您使用setOpaque
,那么您会遇到一个问题,即Label
本身会遮挡背景。将它们替换为正确的 Swing 组件 (JLabel
),问题就会消失。像这样混合使用 Swing 和 AWT 组件通常不是一个好主意。
关于java - 无法更改背景 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35654134/