public class Test {
public static void main(String[] args) {
JFrame jFrame = new JFrame("学习监听");
jFrame.setSize(600,600);
jFrame.setLocationRelativeTo(null);
jFrame.setLayout(null);
jFrame.setDefaultCloseOperation(3);
JButton jbt=new JButton("点我试试看");
jbt.setBounds(50,50,100,100);
jbt.addActionListener( new jian());
jFrame.getContentPane().add(jbt);
jFrame.setVisible(true);
}
这样运行以后可以显示我的按钮
但是我换了另一种写法就不显示是为啥啊
public class Test {
public static void main(String[] args) {
JFrame jFrame = new JFrame("学习监听");
jFrame.setSize(600,600);
jFrame.setLocationRelativeTo(null);
jFrame.setLayout(null);
jFrame.setDefaultCloseOperation(3);
JButton jbt=new JButton("点我试试看");
jbt.setBounds(50,50,100,100);
jbt.addActionListener( new jian());
Panel p=new Panel();
p.add(jbt);
jFrame.add(p);
jFrame.setVisible(true);
}
彭于晏们快来看看吧
jFrame.setLayout(null) 注释掉这个,按钮就可以显示出来。
jFrame.setLayout(null)表示启用绝对布局,绝对布局的优点是你可以非常精确地控制组件的位置和大小,适用于一些特定的布局需求。然而,它也有一些局限性。由于组件的位置和大小是固定的,当窗体的大小改变时,组件的位置和大小不会自动调整,可能导致组件的重叠或不可见。此外,绝对布局不考虑不同操作系统或不同屏幕分辨率的差异,可能导致在不同环境下显示效果不一致。
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
在第二个写法中,你将按钮添加到了一个Panel中,但是没有设置该Panel的大小和位置,因此按钮无法显示出来。你可以通过设置Panel的大小和位置来解决这个问题,例如:
Panel p=new Panel();
p.setBounds(0, 0, 600, 600);
p.add(jbt);
jFrame.add(p);
这样就可以让按钮显示出来了。完整代码如下:
public class Test {
public static void main(String[] args) {
JFrame jFrame = new JFrame("学习监听");
jFrame.setSize(600,600);
jFrame.setLocationRelativeTo(null);
jFrame.setLayout(null);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton jbt=new JButton("点我试试看");
jbt.setBounds(50,50,100,100);
jbt.addActionListener(new jian());
Panel p=new Panel();
p.setBounds(0, 0, 600, 600);
p.add(jbt);
jFrame.add(p);
jFrame.setVisible(true);
}
}
panel面板可以理解为一个场景,它是可以嵌套在Frame里的
panel本身也是一个类,就可以通过从操作类的方式去操作它
下面的代码就是一个窗口中嵌套一个面板的实现
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestPanel {
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
//设置布局
frame.setLayout(null);
//坐标,大小,颜色
frame.setBounds(300,300,500,500);
frame.setBackground(new Color(0xAF702B));
//设置panel位置,大小,颜色
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(0x861C5B));
frame.add(panel);
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
设置面板的属性的方法大致上和设置窗口的方法差不多
由于提供的信息太少,无法判断问题产生原因。请提供更具体的代码以及对比两种写法的差异,或者提供运行时的错误信息。