Java 我能';t在创建的窗口中获取标签和按钮组件
我尝试学习GUI,并尝试创建屏幕上有两个按钮和jne标签的窗口。但我不明白为什么我不能同时看到这些元素。当我注释掉按钮的行时,我可以看到Label元素。 这是我的密码: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
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(…)由于JPanels中的默认布局(FlowLayout),因此不应用代码>语句,也不鼓励使用该语句。(因为它不能在不同屏幕分辨率的计算机上正常工作)
如果要更改组件的大小,应更改默认布局,并使用customLayout、borderLayout、gridLayout
如果您想深入了解布局的工作原理以及Java中所有可用的布局,请检查