【问题标题】:JButton.setBounds(x,y,w,h) doesn't seem to workJButton.setBounds(x,y,w,h) 似乎不起作用
【发布时间】:2013-07-03 02:59:19
【问题描述】:
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class SimpleExample extends JFrame {

    public SimpleExample() {

        setTitle("Simple example");
        setSize(500, 500);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        JButton jb = new JButton("TEST");
        jb.setBorderPainted(true);
        jb.setBounds(5, 5, 1, 1); ---> This line
        add(jb);

    }

    public static void main(String[] args) {

        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                SimpleExample ex = new SimpleExample();
                ex.setVisible(true);
            }
        });
    }
}

只需创建一个首选大小的简单按钮。 setBounds 方法似乎不起作用。我哪里错了?

【问题讨论】:

  • 1) Java GUI 可能必须在多个平台、不同的屏幕分辨率和使用不同的 PLAF 上工作。因此,它们不利于组件的精确放置。要组织强大的 GUI 组件,请改用布局管理器或它们的组合,以及用于空白空间的布局填充和边框。 2) 请对代码、输入/输出和结构化文档(如 HTML 或 XML)使用代码格式。为此,请选择示例并单击消息发布/编辑表单上方的{} 按钮。

标签: java swing jbutton layout-manager


【解决方案1】:

您的框架受布局管理器的控制,它决定如何最好地布局您的组件,并覆盖您使用 setBounds 指定的值

现代 GUI 需要在各种不同的图形环境中运行(即使在相同的操作系统上),包括不同的 DPI、屏幕尺寸和字体设置等。

布局管理器使您可以(更少)担心这些问题,强烈建议您使用它们

看看

更多详情

【讨论】:

    【解决方案2】:

    最好不要将按钮直接添加到JFrame。相反,将JPanel 添加到框架,将面板的布局设置为null,并将JButton 添加到JPanel

    【讨论】:

    • null 布局是不推荐的突出显示,因为它们会导致更多的问题和问题然后解决。如果您正在开发能够在各种不同图形环境上运行的现代 UI,那么建议您使用适当的布局管理器。 nb- 不是反对者,而是支持者
    猜你喜欢
    • 2021-07-18
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多