Java Swing JFrame 布局

标签 java swing jframe jbutton layout-manager

我只是写了一个简单的代码,我希望在主框架上显示一个文本字段和一个按钮,但运行后我看到的只是文本字段。

如果我在文本字段之后编写按钮的代码,那么只会显示按钮。

知道为什么吗?

    JFrame mainframe=new JFrame();
    mainframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    mainframe.setBounds(0,0,200,200);
    JButton jb=new JButton();
    jb.setText("Leech");
    mainframe.add(jb);
    JTextField link=new JTextField(50);
    mainframe.add(link);
    mainframe.pack();
    mainframe.setVisible(true);

最佳答案

JFrame 上的默认布局是 BorderLayout。在具有此类布局的Container 上调用add 方法等同于调用add(..., BorderLayout.CENTER)BorderLayout 的每个位置只能包含一个元素。因此打了两个电话

mainframe.add(jb);
mainframe.add(link);

生成包含您添加的最后一个组件的 CENTER。如果你想避免这种情况,你可以将它添加到不同的位置,或者通过调用 JFrame#setLayout 使用另一个布局管理器(例如 FlowLayout)

关于Java Swing JFrame 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8660751/

相关文章:

java - 当我尝试使用 Canvas 显示背景图像时出现问题

java - 如何将新的 JFrame 附加到已经制作的框架上?

java - 最小化和最大化 java swing 时的帧大小问题

java - Castor 为 xsd 中的整数类型生成 BigDecimal 类型

java - 将单词 `public` 声明为字符串变量 intellij 时出错

java - 在java中使用线程计算所用的总时间

java - 为什么我的 JFrame 是空白的?

java - 函数方法

java - 如果将非法参数传递给 API 方法,何时抛出异常?

Java 在突出显示的文本上选择文本