要实现一个界面,内容有5个JLabel,5个文本框,一一对应,还加一个登录按钮,我的布局思想是把一个JLabel与一个JTextField放在一个JPanel里,再把这些JPanel放在设为盒布局的JFrame里,下面的代码为什么说:BoxLayout can't be shared,请各位帮帮忙!不胜感激!(JDK版本是1.6)
import javax.swing.*;
import java.awt.*;public class jiemian extends JFrame{
public jiemian() {
super("职员信息注册");
JFrame JF=new JFrame();
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
JPanel jp5=new JPanel();
JLabel empName=new JLabel("empName");
JLabel empSex=new JLabel("empSex");
JLabel empAge=new JLabel("empAge");
JLabel empTel=new JLabel("empTel");
JLabel empAddress=new JLabel("empAddress");
JTextField jf1=new JTextField(20);
JTextField jf2=new JTextField(20);
JTextField jf3=new JTextField(20);
JTextField jf4=new JTextField(20);
JTextField jf5=new JTextField(20);
JButton sure=new JButton("Login");
jp1.add(empName);
jp2.add(empSex);
jp3.add(empAge);
jp4.add(empTel);
jp5.add(empAddress);
jp1.add(jf1);
jp2.add(jf2);
jp3.add(jf3);
jp4.add(jf4);
jp5.add(jf5);
add(jp1);
add(jp2);
add(jp3);
add(jp4);
add(jp5);
add(sure);
BoxLayout box=new BoxLayout(JF,BoxLayout.Y_AXIS);
setLayout(box);
setSize(400,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
}
import javax.swing.*;
import java.awt.*;public class jiemian extends JFrame{
public jiemian() {
super("职员信息注册");
JFrame JF=new JFrame();
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
JPanel jp5=new JPanel();
JLabel empName=new JLabel("empName");
JLabel empSex=new JLabel("empSex");
JLabel empAge=new JLabel("empAge");
JLabel empTel=new JLabel("empTel");
JLabel empAddress=new JLabel("empAddress");
JTextField jf1=new JTextField(20);
JTextField jf2=new JTextField(20);
JTextField jf3=new JTextField(20);
JTextField jf4=new JTextField(20);
JTextField jf5=new JTextField(20);
JButton sure=new JButton("Login");
jp1.add(empName);
jp2.add(empSex);
jp3.add(empAge);
jp4.add(empTel);
jp5.add(empAddress);
jp1.add(jf1);
jp2.add(jf2);
jp3.add(jf3);
jp4.add(jf4);
jp5.add(jf5);
add(jp1);
add(jp2);
add(jp3);
add(jp4);
add(jp5);
add(sure);
BoxLayout box=new BoxLayout(JF,BoxLayout.Y_AXIS);
setLayout(box);
setSize(400,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
}
解决方案 »
- 急:串口问题
- JTable中有没有可以唯一地标志某一行的属性啊
- 如何能使JTextArea中的字符有不同的颜色?
- hibernate的配置问题。
- 请教JAVA怎么实现从一个中文文本中查到我定义的几个词汇
- 有没有专门介绍APPLET的书,和例子
- 为什么呢?不明白。
- 回答这个问题吧,你可以捡分了,呵呵
- 用jb如何编写给指定信箱发送e_mail,各位大哥帮帮忙,我快不行了
- Openfire 导入MySQL 数据库 A connection to the database could not be made 的问题
- 什么是适配器模式,我觉得与工厂模式有点相同。
- java中没有指针,怎么构建一个链表树?
JPanel panel = new JPanel(new BorderLayout());
panel.add(panel1,BorderLayout.CENTER);
panel.add(new JButton("login"),BorderLayout.SOUTH);frame.setContentPane(panel);
setLayout(box); /**
* Creates a layout manager that will lay out components along the
* given axis.
*
* @param target the container that needs to be laid out
* @param axis the axis to lay out components along. Can be one of:
* <code>BoxLayout.X_AXIS</code>,
* <code>BoxLayout.Y_AXIS</code>,
* <code>BoxLayout.LINE_AXIS</code> or
* <code>BoxLayout.PAGE_AXIS</code>
*
* @exception AWTError if the value of <code>axis</code> is invalid
*/
public BoxLayout(Container target, int axis) {
//你的JF对象与上面的setLayout(box);不是同一个target
//setLayout(box);是设置在jiemian的Container void checkContainer(Container target) {
if (this.target != target) {
throw new AWTError("BoxLayout can't be shared");
}
}
//两个target不相同造成的.
//JFrame JF=new JFrame(); 这个去掉.
//把它改成BoxLayout box = new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS);
//你的当前类就是一个JFrame.为什么不直接用它呢?你的程序不也是直接把其它的组件添加到当前的JFrame中的吗?
//为什么要用到这个JF?要做成什么样子.把思路理一下.
public class jiemian extends JFrame{
/**
*
*/
private static final long serialVersionUID = -7664253667218711192L; public jiemian() {
super("职员信息注册");
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
JPanel jp3=new JPanel();
JPanel jp4=new JPanel();
JPanel jp5=new JPanel();
JLabel empName=new JLabel("empName");
JLabel empSex=new JLabel("empSex");
JLabel empAge=new JLabel("empAge");
JLabel empTel=new JLabel("empTel");
JLabel empAddress=new JLabel("empAddress");
JTextField jf1=new JTextField(20);
JTextField jf2=new JTextField(20);
JTextField jf3=new JTextField(20);
JTextField jf4=new JTextField(20);
JTextField jf5=new JTextField(20);
JButton sure=new JButton("Login"); jp1.add(empName);
jp2.add(empSex);
jp3.add(empAge);
jp4.add(empTel);
jp5.add(empAddress);
jp1.add(jf1);
jp2.add(jf2);
jp3.add(jf3);
jp4.add(jf4);
jp5.add(jf5);
getContentPane().add(jp1);
getContentPane().add(jp2);
getContentPane().add(jp3);
getContentPane().add(jp4);
getContentPane().add(jp5);
getContentPane().add(sure);
BoxLayout box=new BoxLayout(getContentPane(),BoxLayout.Y_AXIS);
getContentPane().setLayout(box);
setSize(400,300);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
}
}
//按你原始的思想的改动.
现在的JDK1.6是不要获取中间面板的,还有11楼的朋友说的布局是GridBagLayout吗?你说的是GroupLauout我没用过,受教了!