Java 一个框架中有多个JPanel/具有圆括号图像和另一个顶部有组件的层
我有一个带有JPanel的JFrame,其中有一个带有ImageIcon()的JLabel。一切都运行得很好,问题是我现在想在JFrame中添加另一个JPanel和所有其他东西,比如按钮等等。但它仍然在顶部显示背景图像,与第二个JPanel无关 有人能帮我吗? 以下是我的代码摘录:Java 一个框架中有多个JPanel/具有圆括号图像和另一个顶部有组件的层,java,swing,jframe,jpanel,jlabel,Java,Swing,Jframe,Jpanel,Jlabel,我有一个带有JPanel的JFrame,其中有一个带有ImageIcon()的JLabel。一切都运行得很好,问题是我现在想在JFrame中添加另一个JPanel和所有其他东西,比如按钮等等。但它仍然在顶部显示背景图像,与第二个JPanel无关 有人能帮我吗? 以下是我的代码摘录: JFrame window = new JFrame("Http Download"); /* * Background Section */ JPanel panel1 = new JPanel(); J
JFrame window = new JFrame("Http Download");
/*
* Background Section
*/
JPanel panel1 = new JPanel();
JLabel lbl1 = new JLabel();
/*
* Component Section
*/
JPanel panel2 = new JPanel();
JLabel lbl2 = new JLabel();
/*
* Dimension Section
*/
Dimension windowSize = new Dimension(800, 600);
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
public HTTPDownloadGUI() {
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1.setLayout(null);
panel1.setSize(windowSize);
panel1.setOpaque(false);
panel2.setLayout(null);
panel2.setSize(windowSize);
panel2.setOpaque(false);
lbl1.setSize(windowSize);
lbl1.setLocation(0, 0);
lbl1.setIcon(new ImageIcon(getClass().getResource("bg1.png")));
panel1.add(lbl1);
lbl2.setBounds(0, 0, 100, 100);
//lbl2.setIcon(new ImageIcon(getClass().getResource("bg2.png")));
lbl2.setBackground(Color.GREEN);
panel2.add(lbl2);
panel1.add(panel2);
window.add(panel1);
int X = (screen.width / 2) - (windowSize.width / 2);
int Y = (screen.height / 2) - (windowSize.height / 2);
window.setBounds(X,Y , windowSize.width, windowSize.height);
window.setVisible(true);
}
BorderLayout
BorderLayout
是主要的背景panel1
- 将
的布局设置为panel1
BorderLayout
- 将
添加到lbl1
panel1
- 将
的布局设置为lbl1
BorderLayout
- 将
的布局设置为您想要使用的布局panel2
- 将
的不透明度属性设置为panel2
(false
)panel2.setOpacity(false)
- 将
添加到lbl2
panel2
- 将
添加到panel2
lbl1
- 将
添加到您想要的内容中panel1
我建议你听从程序员的建议。如果选择使用空布局,请确保删除以前的
JPanel
,并将新布局添加到内容窗格window.setContentPane(panel2)
并调用window.repaint()
面板2似乎没有显示任何内容的原因是因为没有可显示的内容。只需为lbl2
设置文本即可显示JPanel
本身可见:
JLabel lbl2 = new JLabel("Some text");
但是,我建议不要使用
null
布局,因为它会给开发人员带来设置位置和尺寸的开销,而a可以轻松为您管理这些位置和尺寸。您指的是哪些标签、哪些框架和哪个面板?请你再解释一下好吗?太好了,它很好用。我的错误是我将panel2添加到panel1而不是label1。谢谢你的帮助!
JLabel lbl2 = new JLabel("Some text");