框布局无法共享错误?



嗨,我正在使用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部分的嵌套盒layout工作正常?

有人可以帮忙吗?

更改以下内容:

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

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

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

顺便说一句,您可能会通过让您的班级扩展Jframe,迫使您创建和显示Jframes,而通常需要更灵活的情况。实际上,我会冒险,我创建和我所看到的大多数摇摆GUI代码都不是扩展Jframe,实际上很少会想做这。更常见的是,您的GUI课程将旨在创建JPANELS,然后将其放入Jframes或Jdialogs或Jtabbedpanes中,或者在需要的任何地方通过卡套件交换。这将大大提高您的GUI编码的灵活性。

相关内容

  • 没有找到相关文章

最新更新