Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按钮缩放所有屏幕_Java_Eclipse_Swing_Java 8_Jbutton - Fatal编程技术网

Java 按钮缩放所有屏幕

Java 按钮缩放所有屏幕,java,eclipse,swing,java-8,jbutton,Java,Eclipse,Swing,Java 8,Jbutton,我有以下代码 JFrame frame = new JFrame("Organizer"); frame.setBounds(100, 100, 700, 700); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); JButton testbutton = new JButton("testbutton"); testbutton.set

我有以下代码

    JFrame frame = new JFrame("Organizer");
    frame.setBounds(100, 100, 700, 700);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);


    JButton testbutton = new JButton("testbutton");
    testbutton.setBounds(0, 0, 55, 55);

    JButton testbutton2 = new JButton("tdestbutton2");
    testbutton2.setBounds(55, 0, 44, 44);

    frame.add(testbutton2);
    frame.add(testbutton);
结果有时是正确的,有时是这样

我做错了什么

我做错了什么

  • 不要使用
    setBounds()
    ;一定要用铅笔

  • 将组件添加到封闭容器后调用
    setVisible()

  • 仅在上构造和操作Swing GUI对象

下面的示例添加了一个面板,该面板具有空边框和填充匹配的
GridLayout
。对于这样的应用,也要考虑按钮和工作屏幕。

我做错了什么

  • 不要使用
    setBounds()
    ;一定要用铅笔

  • 将组件添加到封闭容器后调用
    setVisible()

  • 仅在上构造和操作Swing GUI对象

下面的示例添加了一个面板,该面板具有空边框和填充匹配的
GridLayout
。对于这样的应用,也要考虑按钮和工作屏幕。

摆脱那些陈述,因为那就什么也不做了

它们什么也不做,因为JFrame的内容窗格的默认布局管理器是
BorderLayout
BorderLayout
将重置每个组件的大小/位置

BorderLayout
要求您在将构件添加到框架时提供“约束”。如果不提供约束,则使用“中心”。只有一个组件可以添加到“中心”,因此仅显示最后添加的按钮

要理解使用
边框布局的基本概念,一个简单的解决方案是使用:

//frame.add(testbutton2);
//frame.add(testbutton);
frame.add(testbutton2, BorderLayout.PAGE_START);
frame.add(testbutton, BorderLayout.PAGE_END);
这将在两行上显示按钮

有关更多信息和示例,请阅读上的Swing教程。下载演示代码并根据Swing惯例修改该代码

例如,在使框架可见之前,需要将组件添加到框架中。因此,代码的顺序应该是:

frame.add(...);
frame.add(...);
frame.pack();
frame.setVisible(true);
摆脱那些陈述,因为那就什么也不做了

它们什么也不做,因为JFrame的内容窗格的默认布局管理器是
BorderLayout
BorderLayout
将重置每个组件的大小/位置

BorderLayout
要求您在将构件添加到框架时提供“约束”。如果不提供约束,则使用“中心”。只有一个组件可以添加到“中心”,因此仅显示最后添加的按钮

要理解使用
边框布局的基本概念,一个简单的解决方案是使用:

//frame.add(testbutton2);
//frame.add(testbutton);
frame.add(testbutton2, BorderLayout.PAGE_START);
frame.add(testbutton, BorderLayout.PAGE_END);
这将在两行上显示按钮

有关更多信息和示例,请阅读上的Swing教程。下载演示代码并根据Swing惯例修改该代码

例如,在使框架可见之前,需要将组件添加到框架中。因此,代码的顺序应该是:

frame.add(...);
frame.add(...);
frame.pack();
frame.setVisible(true);

你认为哪个UI库更好?@dios231:断章取义,很难说;为了跨平台的方便,我几乎总是更喜欢可用的Java风格(2D、AWT、SWT、Swing、FX)。你认为哪个UI库更好?@dios231:断章取义,很难说;为了跨平台的方便,我几乎总是更喜欢可用的Java风格(2D、AWT、SWT、Swing、FX)。