【问题标题】:BoxLayout can't be shared error? [duplicate]BoxLayout 不能共享错误? [复制]
【发布时间】:2015-07-20 07:59:18
【问题描述】:

您好,我正在开发一个 Java 应用程序,下面是一个名为 Gui 的自定义类的摘录,它扩展了 JFrame:

public Gui(){
    super("EVC Scan & Price");
    setSize(400,500);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(false);
    // GridLayout layout = new GridLayout(5,1);
    BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS);
    setLayout(layout);

    //add header row
    headerRow.setAlignmentX(Component.CENTER_ALIGNMENT);
    BorderLayout layoutHeading = new BorderLayout();
    headerRow.setLayout(layoutHeading);
    if (headerImg != null){
    ImageIcon icon = new ImageIcon(headerImg);
    picLabel.setIcon(icon);}
    headerRow.add(picLabel, BorderLayout.NORTH);
    title.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    headerRow.add(title, BorderLayout.SOUTH);
    add(headerRow);

    //add first row
    firstRow.setAlignmentX(Component.LEFT_ALIGNMENT);
    BoxLayout layoutRow1 = new BoxLayout(firstRow,BoxLayout.Y_AXIS);
    firstRow.setLayout(layoutRow1);
    firstRow.add(catLabel);
    scroll.setSize(390,100);
    firstRow.add(scroll);
    add(firstRow);

    setVisible(true);
}

我已经阅读了很多教程和 api 并且真的看不出有什么问题,但是行阅读: add(headerRow);似乎是“无法共享 BoxLayout”错误的触发器。 如果我将 JFrame 的布局更改为 flowlayout,则应用于 firstRow 部分的嵌套 boxlayout 可以正常工作吗?

有人可以帮忙吗?

【问题讨论】:

    标签: java swing jframe boxlayout


    【解决方案1】:

    改变这个:

    BoxLayout layout = new BoxLayout(this, BoxLayout.Y_AXIS);
    

    到这里:

    BoxLayout layout = new BoxLayout(getContentPane(), BoxLayout.Y_AXIS);
    

    产生错误的代码将 JFrame 作为使用容器的 BoxLayout 传递到 BoxLayout 的构造函数中,但实际上并非如此。实际上,您将布局添加到 JFrame 的 contentPane 而不是 JFrame。

    顺便说一句,当你经常需要更大的灵活性时,你可能会通过让你的类扩展 JFrame 来把自己画在一个角落里,从而迫使你创建和显示 JFrame。事实上,我敢冒险说,我创建的大部分 Swing GUI 代码扩展了 JFrame,事实上你很少愿意这样做这。更常见的是,您的 GUI 类将用于创建 JPanel,然后可以将其放置到 JFrame 或 JDialogs 或 JTabbedPanes 中,或者在需要时通过 CardLayouts 交换。这将大大增加您的 GUI 编码的灵活性。

    【讨论】:

      猜你喜欢
      • 2019-09-26
      • 1970-01-01
      • 2014-12-25
      • 2019-04-06
      • 2010-10-20
      • 2015-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多