大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
问题一:
创新互联主打移动网站、成都网站设计、成都网站制作、外贸网站建设、网站改版、网络推广、网站维护、空间域名、等互联网信息服务,为各行业提供服务。在技术实力的保障下,我们为客户承诺稳定,放心的服务,根据网站的内容与功能再决定采用什么样的设计。最后,要实现符合网站需求的内容、功能与设计,我们还会规划稳定安全的技术方案做保障。
自定义的类BorderLayout和 java.awt.BorderLayout 这个类同名了 , 需要修改.
比如修改成BorderLayoutDemo
问题二:
这些组件的复制粘贴 ,注意修改啊 ,jb1 ,jb2 ,jb2...jb2 , jb2添加了4次....
this.add(jb1,BorderLayout.CENTER);
this.add(jb2,BorderLayout.NORTH);
this.add(jb2,BorderLayout.EAST);
this.add(jb2,BorderLayout.SOUTH);
this.add(jb2,BorderLayout.WEST);
并且由于你的类名也叫BorderLayout ,所以BorderLayout.CENTER..等方位的值都是null.
缺省的状态下,都会放到中间. 最后的覆盖前面的.所以最后只显示出1个jb2.并且居中
修改后的效果图
修改的代码
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
//注意类名
public class BorderLayoutDemo extends JFrame {
// 定义组件
JButton jb1, jb2, jb3, jb4, jb5;
public static void main(String[] args) {
// TODO Auto-generated method stub
BorderLayoutDemo bl = new BorderLayoutDemo();
}
public BorderLayoutDemo() {
// 创建组件
jb1 = new JButton("中部");
jb2 = new JButton("北部");
jb3 = new JButton("东部");
jb4 = new JButton("南部");
jb5 = new JButton("西部");
// 添加组件
this.add(jb1, BorderLayout.CENTER);
this.add(jb2, BorderLayout.NORTH);
this.add(jb3, BorderLayout.EAST);
this.add(jb4, BorderLayout.SOUTH);
this.add(jb5, BorderLayout.WEST);
// 设置窗口属性
this.setTitle("边界布局案例");
this.setSize(500, 400);
this.setLocation(600, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
所有的容器均可以调用父类设置布局管理器方法
setlayout(layoutmanager
mgr)
设置此容器的布局管理器。
有布局管理器的情况下,设置组件位置大小是不起作用的。
可以用如下代码设置布局管理器为空。
setLayout(null);
但是还是建议找本教程学习一下常用的布局管理器。
把JFrame设置个BorderLayout,把JPanel放在North里,JPanel就会自动调整大小了。
至于JPanel里的布局,不知你出于什么特殊理由,单纯需要重叠的话应该有合适的布局管理器。另外还有个思路,改变一下你的设计方法,可能就有更简单的方案。实际上很多设计中的需求以前就有很多人遇到了并且作出了好的方案,甚至已经是标准做法,所以多学习参考一下。
import java.awt.*;
import javax.swing.*;
public class Test23 extends JFrame {
private static final long serialVersionUID = 7239111811875566198L;
static JPanel p1 = new JPanel();
static JPanel p2 = new JPanel();
static JPanel p3 = new JPanel();
static JLabel l1 = new JLabel("添加记录", JLabel.CENTER);
static JLabel l2 = new JLabel("姓名", JLabel.CENTER);
static JLabel l3 = new JLabel("系别", JLabel.CENTER);
static JLabel l4 = new JLabel("专业", JLabel.CENTER);
static JLabel l5 = new JLabel("班级", JLabel.CENTER);
static JTextField t1 = new JTextField();
static JTextField t2 = new JTextField();
static JTextField t3 = new JTextField();
static JTextField t4 = new JTextField();
static JButton j1 = new JButton("确定");
static JButton j2 = new JButton("取消");
public Test23() {
setTitle("添加记录");
Container c = getContentPane();
c.setLayout(new BorderLayout());
p1.setLayout(new FlowLayout(FlowLayout.CENTER));
p2.setLayout(new GridLayout(4, 2, 5, 5));
p3.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
c.add(p1, BorderLayout.NORTH);
c.add(p2, BorderLayout.CENTER);
c.add(p3, BorderLayout.SOUTH);
//标题
p1.add(l1);
//姓名
p2.add(l2);
p2.add(t1);
//系别
p2.add(l3);
p2.add(t2);
//专业
p2.add(l4);
p2.add(t3);
//班级
p2.add(l5);
p2.add(t4);
//按钮
p3.add(j1);
p3.add(j2);
this.setSize(200, 200);
this.setLocationRelativeTo(this);/*屏幕居中显示*/
this.setVisible(true);
}
public static void main(String[] args) {
JFrame frame = new Test23();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
因为Frame默认的布局是BorderLayout。就是分为东南西北中五个模块的布局,如果只在BorderLayout中加一个Panel就充满整个Frame(加两个Panel或以上就要设置位置了,BorderLayout.North这样)。
如果你加上f.setLayout(null)这个,就是设置空布局,这样的话,放在Frame里面的Panel默认就是放在右上角,大小就是Panel的大小pan.setSize(100,100);如果Panel的Size跟Frame一样大就得到之前的效果,当然也可以设置Panel的默认位置setLocation就行了。
lz 你好
具体代码如下:
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame{
private JPanel panel_1,panel_2;
private JButton[] button_1,button_2;
public Test(){
super("Test");
button_1 = new JButton[3];
button_2 = new JButton[3];
panel_1 = new JPanel(new GridLayout(3,2));
panel_2 = new JPanel(new GridLayout(3,2));
for (int i = 0; i 3; i++) {
button_1[i] = new JButton("Panel_1:"+(i+1));
button_2[i] = new JButton("Panel_2:"+(i+4));
panel_1.add(button_1[i]);
panel_2.add(button_2[i]);
}
setLayout(new FlowLayout(FlowLayout.CENTER,5,30));
getContentPane().add(panel_1);
getContentPane().add(panel_2);
setLocation(400,150);
setSize(200,300);
setVisible(true);
setDefaultCloseOperation(3);
}
public static void main(String[] args) {
new Test();
}
}
希望能帮助你哈