为什么java中添加两个按钮到JFrame中只显示后一个?

2024-11-28 22:51:21
推荐回答(2个)
回答1:

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

public class P004_BorderLayout {
JFrame jframe;
JButton jb0,jb1, jb2, jb3, jb4, jb5, jb6;

public P004_BorderLayout() {
jframe = new JFrame();
jframe.setTitle("边界布局");
jframe.setBounds(300, 200, 180, 180);
//jframe.setLayout(new FlowLayout());//你可以直接指定jframe的布局,也可以使用jframe默认的边界布局
jb0 = new JButton("东一");
jb1 = new JButton("东");
jframe.add(jb0,BorderLayout.EAST);//
jframe.add(jb1, BorderLayout.EAST);//jframe默认是边界布局,同一个位置放入组件,那么后面的组件覆盖前面的组件
System.out.println(jframe.getLayout());//BorderLayout 边界布局

jb2 = new JButton("西");
jframe.add(jb2, BorderLayout.WEST);

jb3 = new JButton("南");
jframe.add(jb3, BorderLayout.SOUTH);

jb4 = new JButton("北");
jframe.add(jb4, BorderLayout.NORTH);


jb5 = new JButton("中一");
jb6 = new JButton("中二");
JPanel jp = new JPanel();//JPanel默认是流式布局 ,所以就是一个靠近一个的出来
System.out.println(jp.getLayout());//FlowLayout 流式布局
jp.add(jb5);
jp.add(jb6);
jframe.add(jp,BorderLayout.CENTER);


jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jframe.setVisible(true);
}

public static void main(String[] args) {
new P004_BorderLayout();
}
}


BorderLayout 边界布局是JFrame窗口的默认布局  上下左右中,五个方位的布局

FlowLayout    流式布局是JPanel的默认布局          一个靠着一个的布局

回答2:

应该是你没有给框架进行布局导致的
Jpanel自带为流水布局