Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 我能';t在创建的窗口中获取标签和按钮组件_Java_User Interface - Fatal编程技术网

Java 我能';t在创建的窗口中获取标签和按钮组件

Java 我能';t在创建的窗口中获取标签和按钮组件,java,user-interface,Java,User Interface,我尝试学习GUI,并尝试创建屏幕上有两个按钮和jne标签的窗口。但我不明白为什么我不能同时看到这些元素。当我注释掉按钮的行时,我可以看到Label元素。 这是我的密码: import java.awt.*; import javax.swing.*; public class MyWin { public static void main(String[] args) { JFrame w = new JFrame("My Window"); w.s

我尝试学习GUI,并尝试创建屏幕上有两个按钮和jne标签的窗口。但我不明白为什么我不能同时看到这些元素。当我注释掉按钮的行时,我可以看到Label元素。 这是我的密码:

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

public class MyWin {

    public static void main(String[] args) {

        JFrame w = new JFrame("My Window");
        w.setSize(1000,800);
        w.setVisible(true);

        JButton b = new JButton("My button");
        b.setVisible(true);
        b.setSize(150, 100);
        b.setLocation(500, 20);

        JButton b2 = new JButton("Second button");
        b2.setVisible(true);
        b2.setSize(150,100);
        b2.setLocation(500, 600);

        JLabel l = new JLabel("My label");
        l.setVisible(true);

        w.getContentPane().add(b);
        w.getContentPane().add(b2);
        w.getContentPane().add(l);
    }
}

JFrame
的默认布局是
BorderLayout
,当您通过单个参数
add
方法添加
JLabel
时,默认情况下会添加
BorderLayour.CENTER
约束,这会导致填充所有可用空间。因此,您可能希望使用适合您需要的布局管理器,这样组件就不会覆盖它们自己


首先,JFrame使用BorderLayout作为默认布局,只需添加组件(
w.getContentPane().add(b)
)即可在
BorderLayout.CENTER中设置组件它们占据整个JFrame以填充空白。因此,建议在JPanel中添加组件。因此,您应该首先创建一个JPanel,将组件添加到JPanel中,最后将其添加到JFrame中

setSize(…)语句,也不鼓励使用该语句。(因为它不能在不同屏幕分辨率的计算机上正常工作)

如果要更改组件的大小,应更改默认布局,并使用customLayout、borderLayout、gridLayout

如果您想深入了解布局的工作原理以及Java中所有可用的布局,请检查