我在这里查看了许多答案并相应地更改了我的代码,但它仍然无法正常工作。有人可以帮我解决一下吗?
import javax.swing.*;
import java.awt.*;
public class LoginGUI extends JFrame {
LoginGUI() {
Container c = getContentPane();
c.setBackground(Color.BLACK);
JPanel p = new JPanel();
JLabel title = new JLabel("HTML Generator");
title.setForeground(Color.black);
p.add(title);
c.add(p);
title.setOpaque(true);
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args) {
new LoginGUI();
}
}
答案 0 :(得分:2)
JPanel
的opaque属性为true,JFrame
默认布局为BorderLayout
。只向框架中添加一个组件(JPanel
),会将其拉伸到框架的整个大小,这就是BorderLayout
将执行的操作。因此,覆盖整个框架的不透明面板可以解释您获得的结果。
三个简单的修复。将JPanel
opaque属性设置为false,或者仅在JPanel
上设置背景,或将框架的布局设置为GridBagLayout
或FlowLayout