Java JFrame/JButton/Box - 没有按钮出现

标签 java swing layout jframe jbutton

1级

public class mainclass extends JFrame{
    public static void main(String[] args){
        JFrame jf = new mainclass();
        jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        jf.setVisible(true);
        jf.setSize(new Dimension(720, 480));
        jf.getContentPane().setLayout(null);
    }
    public mainclass(){
        components c = new components();
        Box b = new Box(BoxLayout.Y_AXIS);
        for(int i = 0; i < c.size(); i++){
            System.out.println(c.get(i).getWidth());
            b.add(c.get(i));
        }
        getContentPane().add(b);
    }
}

2级

public class components extends ArrayList<Component>{
    public components(){
        JButton b = new JButton("Quit");
        b.setBounds(10, 10, 200, 200);
        b.setVisible(true);
        this.add(b);
    }
}

应将 JButton 添加到框中,该框添加到 JFrame 中但没有布局。为什么按钮没有出现?

最佳答案

使用空布局和绝对定位是在搬起石头砸自己的脚。

  • 您为 JFrame 提供了空布局
  • 然后向其中添加一个组件,但不指定其大小或位置(盒子),因此它将具有大小 (0, 0)。
  • 避免使用空布局
  • 学习并使用布局管理器,因为它们将帮助您轻松创建平衡良好的 GUI。

我认为您最好描述一下您想要实现的结构。另外,我会避免创建扩展集合的类,例如 ArrayList。相反,在这种情况下,通过组合而不是继承来增强会更好。

关于Java JFrame/JButton/Box - 没有按钮出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19339175/

相关文章:

java - 如何正确从github引入java库来替换maven项目中的依赖

JavaFX 应用程序 - 什么需要签名?

java - 不使用JDialog如何使用JDialog

android - 布局上的动画?

java - 使用 GridBagLayout 对齐面板

java - 如何使用所有依赖项从命令行编译 Maven 项目?

java - 无法使用 response.sendRedirect 重定向

java - 使 JTextField 背景透明

java - 窗口未触发按键事件

css - 这个布局可以用CSS来完成吗?