有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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);


}

共 (2) 个答案

  1. # 1 楼答案

    我猜问题出在你使用SpringLayout的面板上。首先阅读How to Use SpringLayout上的Swing教程,了解工作示例和解释

    如果你仍然需要帮助,那么发布你的SSCCE来展示你的问题。从简单开始。尝试将SpringLayout与一个组件、两个组件、三个组件一起使用,直到您感觉更舒适为止

  2. # 2 楼答案

    我相信这与自由空间管理有关,但我自己还没有测试过。BoxLayout为其绘制的组件使用首选大小,GridLayout在绘制的对象之间均匀分配可用空间

    如果为EventPanel指定首选大小,会发生什么?根据您的代码示例,您可以通过强制EventPanel实例的首选大小(800400)来快速测试这一点,并查看在使用BoxLayout时它是否会改变某些内容