【问题标题】:Java Horizontal BoxLayout with Vertical Layout Inside内部带有垂直布局的 Java 水平 BoxLayout
【发布时间】:2015-08-10 08:03:56
【问题描述】:

好的,所以我为 JFrame 中的主面板设置了一个 BoxLayout 为 Y_AXIS。我试图将实际的 Frame 设置为设置为 X_AXIS 的 BoxLayout,然后将我的主面板添加到我的 JFrame,但我得到一个 java.awt.AWTError 说:“BoxLayout 无法共享”。还有其他使用 BoxLayout 的方法可以让我这样做吗?

ComponentPanel.setToolTipText("I go in the FramePanel as well as other of my types aligned up and down");

FramePanel.setLayout(new BoxLayout(FramePanel, BoxLayout.Y_AXIS));
FramePanel.add(ComponentPanel);

Frame.setLayout(new BoxLayout(Frame, BoxLayout.X_AXIS));
Frame.add(FramePanel);

【问题讨论】:

    标签: java swing layout-manager boxlayout


    【解决方案1】:

    使用JFrame的内容面板作为BoxLayout的目标容器:

    frame.setLayout(new BoxLayout(frame.getContentPane(), BoxLayout.X_AXIS));
    

    另外,尝试关注Java Naming Conventions。变量名应以小写字母开头;类名应以大写字母开头。

    【讨论】:

    • 好的,谢谢大家,我对这些东西有点陌生,但我想我已经掌握了窍门。我知道命名约定只是懒惰:)。我阅读了 orielly 的 HeadFirst Java 书。如果您对书籍有更多建议,请告诉我。我有点想为中级程序员寻找一本更高级的书。我也有一个新问题同样的错误,但是我在框架中添加了另一个面板,与我的另一个面板的左侧对齐。不过,我想保持相同的 Y_AXIS 方向。
    • @StoneAgeProgrammer 无法帮助您解决书籍问题——抱歉,我很长时间没有阅读 Java SE 书籍(尝试阅读亚马逊上的一些评论)。至于你的下一个问题,如果你添加了一个新面板,它需要一个 new BoxLayout,类似于你设置第一个面板的布局。每个 BoxLayout 只能有一个容器(这就是它在其构造函数中使用容器的原因)...如果您尝试将相同的布局添加到多个面板,您将不断收到相同的错误。
    【解决方案2】:

    BoxLayout 在“new BoxLayout”中是“静态的”。 尝试使用扩展 Panel 的类并将 Panel 放置在包文件夹中以更改 包层次结构级别以分隔“静态字段值”类变量 Boxlayout。

    例如类 Mypanel 扩展 Panel{..... 您将作为一个包导入

    导入单独的guipart.Mypanel;

    面板 insertboxlayoutpanel = (Panel)new Mypanel();

    或使用完整的分类 JNDI 名称

    Panel insertboxlayoutpanel = (Panel)new separateguipart.Mypanel();

    insertboxlayoutpanel.setLayout(new BoxLayout(FramePanel, BoxLayout.Y_AXIS));

    【讨论】:

      【解决方案3】:

      代码没有问题。你只需要导入一些库 import.javax.swing.; 和 import.awt.;

      【讨论】:

        猜你喜欢
        • 2017-08-26
        • 1970-01-01
        • 2019-12-11
        • 2015-03-04
        • 1970-01-01
        • 1970-01-01
        • 2012-01-02
        • 2015-07-27
        • 1970-01-01
        相关资源
        最近更新 更多