java如何可视化缺少的内部面板?
我试图形成以下框架:
主框架使用边框布局
在这个框架中,我添加了一个使用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);
}
# 1 楼答案
我猜问题出在你使用SpringLayout的面板上。首先阅读How to Use SpringLayout上的Swing教程,了解工作示例和解释
如果你仍然需要帮助,那么发布你的SSCCE来展示你的问题。从简单开始。尝试将SpringLayout与一个组件、两个组件、三个组件一起使用,直到您感觉更舒适为止
# 2 楼答案
我相信这与自由空间管理有关,但我自己还没有测试过。
BoxLayout
为其绘制的组件使用首选大小,GridLayout
在绘制的对象之间均匀分配可用空间如果为
EventPanel
指定首选大小,会发生什么?根据您的代码示例,您可以通过强制EventPanel
实例的首选大小(800400)来快速测试这一点,并查看在使用BoxLayout
时它是否会改变某些内容