我正在尝试形成以下框架:
主框架使用BorderLayout。
进入此框架,我添加了一个使用BoxLayout的面板 - 我将其称为P1。
出于某种原因,我在运行程序时看不到我添加到P1中的面板。
更令人困惑的是,如果P1使用GridLayout而不是BoxLayout,则会显示我添加到P1中的所有面板。
代码中使用的EventPanel类扩展了Panel并使用了SpringLayout。
如何让P1工作?
以下是相关代码:
public static void main(String[] args)
{
//Setting Frame
JFrame m_CalendarFrame = new JFrame();
m_CalendarFrame.getContentPane().setLayout(new BorderLayout());
//Setting inner Panel
JPanel P1 = new JPanel();
P1.setLayout(new BoxLayout(P1, BoxLayout.Y_AXIS));
EventPanel Ev = new EventPanel("8:00", "16:00", "Bday", "Go party!");
EventPanel Ev2 = new EventPanel("8:00", "16:00", "Java", "Handing Java Project");
//Adding Two pannels into previous inner Panel
P1.add(Ev);
P1.add(Ev2);
m_CalendarFrame.getContentPane().add(P1, BorderLayout.NORTH);
m_CalendarFrame.setVisible(true);
m_CalendarFrame.setSize(800,800);
}
答案 0 :(得分:2)
我猜你的面板中的问题是使用SpringLayout。首先阅读How to Use SpringLayout上的Swing教程,了解工作示例和解释。
如果您仍需要帮助,请发布展示您问题的SSCCE。并开始简单。尝试使用SpringLayout和一个comopnent,然后是两个,然后是三个,直到你觉得它更加舒适。
答案 1 :(得分:0)
我认为它与自由空间管理有关,但我自己没有测试过。 BoxLayout
使用其绘制的组件的首选大小,GridLayout
在绘制的对象之间均匀分配可用空间。
如果您为EventPanel
指定首选尺寸会怎样?根据您的代码示例,您可以通过强制EventPanel
个实例的首选大小(800,400)来快速测试,并在使用BoxLayout
时查看它是否确实发生了变化。