java - JAVA GUI 编程入门

标签 java

当我在 Eclipse 中编译下面的代码时,我希望出现一个窗口,窗口的左上角有一个按钮。相反,按钮的大小与窗口相同,并完全填充窗口,尽管我想在第 11 行使用“button.setBounds(20, 20, 200, 50);”限制了按钮的大小。谁能告诉我我做错了什么或者我忘记了什么?

import javax.swing.*;
import java.awt.*;

public class BeobachterGUI {
   public BeobachterGUI() {
       JFrame frame = new JFrame("A frame");
       frame.setSize(new Dimension(600, 600));


       JButton button = new JButton("Click me");
       button.setBounds(20, 20, 200, 50);

       frame.getContentPane().add(button);

       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setResizable(false);
       frame.setVisible(true);
   }


   public static void main(String[] args) {
       SwingUtilities.invokeLater(new Runnable() {

       public void run() {   
       new BeobachterGUI();
       }
   });
   }
}

最佳答案

JFrame 自动给自己一个默认的 BorderLayout,这就是让按钮填满整个屏幕的原因。如果您想直接控制按钮的大小和位置,则必须摆脱该布局管理器。使用这行代码:

frame.getContentPane().setLayout(null);

不过,有一个建议:在没有布局管理器的情况下工作对于乐趣和实验来说是可以的,但你不应该养成这样的习惯。如果您学习使用布局管理器进行设计,您将获得更好的 GUI(并且 GUI 的用户将获得更好的体验)。

要查看我的意思的示例,只需观察调整窗口大小时会发生什么:如果将窗口设置得太小,按钮可能会被切断或完全隐藏。布局管理器会尝试重新定位按钮和/或调整按钮大小,使其保持可见。

关于java - JAVA GUI 编程入门,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48208446/

相关文章:

java - 是否有仅适用于 Tomcat 的 JRE 简化版本?

java - 仅在确定提交但在提交之前才拦截事务

java - 在 Android、Eclipse 中打印字符串数组

java - 使用多态性从 JSON 生成对象

java - 我应该使用 '-server' 选项运行 JMH 基准测试吗

java - 在Reducer中从HBase读取数据

java - 为什么空枚举不能有抽象方法?

java - 安卓默认屏幕方向

java - 添加 JPA 后 Spring Boot 关闭

java - Spring @Async 执行器