【发布时间】:2014-01-09 18:43:54
【问题描述】:
在这里尝试使用分层窗格,我遇到了问题。我有两个JPanels。我将它们都添加到JLayeredPane - panel1 足够大以占用整个空间,而 panel2 更小并且使用FlowLayout 居中。问题是使用JLayeredPane,当我添加它时,panel2 旁边的背景似乎被涂成白色。这是一张图片来说明。 panel1 为蓝色,panel2 为红色:
如您所见,panel1 的底部仍然是涂漆的,但由于某种原因侧面只是白色。 panel2 是 700 像素宽并且居中,而框架是 800 像素宽,所以这绝对不是问题。这是整个课程:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
public class Errortest extends JFrame {
public static void main(String[] args) {
//Creating frame and setting the JLayeredPane as contentpane
Errortest frame = new Errortest();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLayeredPane pane = new JLayeredPane();
pane.setLayout(new FlowLayout(FlowLayout.CENTER, 0, 0));
pane.setPreferredSize(new Dimension(800,600));
frame.setContentPane(pane);
frame.pack();
//Creating panels
JPanel panel1 = new JPanel();
panel1.setPreferredSize(new Dimension(800,600));
panel1.setBackground(Color.BLUE);
JPanel panel2 = new JPanel();
panel2.setPreferredSize(new Dimension(700,500));
panel2.setBackground(Color.RED);
pane.add(panel1, new Integer(0));
pane.add(panel2, new Integer(1));
frame.setVisible(true);
}
}
希望这不会太令人困惑。据我所知,白色背景来自JFrame 本身,因为当我执行frame.setBackground(Color.YELLOW); 时,它会变成黄色。
【问题讨论】:
-
如需尽快获得更好的帮助,请发帖MCVE。
-
顺便说一句-为什么这些面板要进行自定义绘画?如果您想要的只是一种颜色,请参阅
setBackground(Color).. -
啊,它们不仅仅是颜色,但我用空白的红色屏幕替换了实际图像以避免混淆。画在面板上的图像不相关=P
-
如果您不希望其他人提出完全相同的建议。可能与包含在代码中无关,但至少在edit to the question..中提及。
-
请注意,要遵守“V”,它也需要导入,但让我们开始吧。 ..为什么是代码/应用程序。完全使用
JLayerdPane?你想达到什么样的最终效果?
标签: java swing jlayeredpane