java,学生一枚,写一个窗体的时候遇到了添加的组件无法显示的问题,请求大神帮忙,代码如下,非常感谢

未眠人 2016-09-19 06:17:50
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyWindows02 extends JFrame {
public static void main(String args[]){
JFrame f=new JFrame("我的第一个窗口");

JPanel p1=new JPanel();

int count=2;
JButton[] buttons=new JButton[count];
for(int i=0;i<count;i++){
buttons[i]=new JButton();
p1.add(buttons[i]);
}

buttons[0].setText("Yes");
buttons[1].setText("No");


JLabel lb1=new JLabel("1、你的姓名是:");
JTextField tf1=new JTextField(10);

JPanel p2=new JPanel();
p2.add(lb1);
p2.add(tf1);
lb1.setBounds(1,1,10,2);
tf1.setBounds(1,3,10,2);

JLabel lb2=new JLabel("2、你所在的班级是:");
JTextField tf2=new JTextField(10);

JPanel p3=new JPanel();
p3.add(lb2);
p3.add(tf2);
lb1.setBounds(1,5,10,2);
tf1.setBounds(1,7,10,2);

JLabel lb3=new JLabel("3、你的学号是:");
JTextField tf3=new JTextField(10);

JPanel p4=new JPanel();
p4.add(lb3);
p4.add(tf3);
lb1.setBounds(1,9,10,2);
tf1.setBounds(1,11,10,2);

JLabel lb4=new JLabel("4、你想借阅的图书是:");
JTextField tf4=new JTextField(10);

JPanel p5=new JPanel();
p5.add(lb4);
p5.add(tf4);
lb1.setBounds(1,13,10,2);
tf1.setBounds(1,15,10,2);

JLabel lb5=new JLabel("是否提交?",10);

f.add(p1);
f.add(p2);
f.add(p3);
f.add(p4);
f.add(p5);

f.setLayout(null);
p1.setVisible(true);
f.setSize(50,50);
f.setVisible(true);

}
}
...全文
409 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
未眠人 2017-10-19
  • 打赏
  • 举报
回复
引用 3 楼 逗泥丸的平方的回复:
最后加个pack();先看看. 写代码时候(尤其是画面这种)先写一点看看,可以用了再大规模的写下去,别稀里糊涂写到最后发现不能用,又要从头改. 默认的应该是流布局(flow),所以显示出来会比较奇怪, 而且你没有指定大小,java比较推荐的方式,感觉是设置控件的大小(使用Dimension之类的),然后把容器"撑大",然而写代码的话,感觉还是指定大小比较容易. 关于布局就要慢慢看了... 边看边试估计一个下午又过去了 个人感觉java自带的,BorderLayout和Grid还算好用.. java的布局基本上都需要panel装panel了.加油吧. 另外推荐一下miglayout
嗯嗯,谢谢,问题已经解决了。忘记给大家回复了,谢谢。
未眠人 2017-10-19
  • 打赏
  • 举报
回复
引用 2 楼 sean_0xiao的回复:
代码如下,给你加了一个布局和窗体的大小: import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class MyWindows02 extends JFrame { public static void main(String args[]){ JFrame f=new JFrame("我的第一个窗口"); //创建JPanel JPanel p1=new JPanel(); int count=2; JButton[] buttons=new JButton[count]; for(int i=0;i<count;i++){ buttons[i]=new JButton(); p1.add(buttons[i]); } buttons[0].setText("Yes"); buttons[1].setText("No"); JLabel lb1=new JLabel("1、你的姓名是:"); JTextField tf1=new JTextField(10); JPanel p2=new JPanel(); p2.add(lb1); p2.add(tf1); lb1.setBounds(1,1,10,2); tf1.setBounds(1,3,10,2); JLabel lb2=new JLabel("2、你所在的班级是:"); JTextField tf2=new JTextField(10); JPanel p3=new JPanel(); p3.add(lb2); p3.add(tf2); lb1.setBounds(1,5,10,2); tf1.setBounds(1,7,10,2); JLabel lb3=new JLabel("3、你的学号是:"); JTextField tf3=new JTextField(10); JPanel p4=new JPanel(); p4.add(lb3); p4.add(tf3); lb1.setBounds(1,9,10,2); tf1.setBounds(1,11,10,2); JLabel lb4=new JLabel("4、你想借阅的图书是:"); JTextField tf4=new JTextField(10); JPanel p5=new JPanel(); p5.add(lb4); p5.add(tf4); lb1.setBounds(1,13,10,2); tf1.setBounds(1,15,10,2); JLabel lb5=new JLabel("是否提交?",10); f.setLayout(new GridLayout(5, 1)); f.add(p2 ); f.add(p3 ); f.add(p4 ); f.add(p5 ); f.add(p1 ); f.setSize(500,500); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
好的,问题已经解决了。谢谢
未眠人 2017-10-19
  • 打赏
  • 举报
回复
引用 1 楼 zycxnanwang的回复:
首先你主窗口都没有布局管理器,还有panel是不能独立显示的窗口,各个panel没有布局,还有frame尺寸太小,
嗯嗯,好的
sean_0xiao 2016-09-20
  • 打赏
  • 举报
回复
代码如下,给你加了一个布局和窗体的大小: import java.awt.BorderLayout; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; public class MyWindows02 extends JFrame { public static void main(String args[]){ JFrame f=new JFrame("我的第一个窗口"); //创建JPanel JPanel p1=new JPanel(); int count=2; JButton[] buttons=new JButton[count]; for(int i=0;i<count;i++){ buttons[i]=new JButton(); p1.add(buttons[i]); } buttons[0].setText("Yes"); buttons[1].setText("No"); JLabel lb1=new JLabel("1、你的姓名是:"); JTextField tf1=new JTextField(10); JPanel p2=new JPanel(); p2.add(lb1); p2.add(tf1); lb1.setBounds(1,1,10,2); tf1.setBounds(1,3,10,2); JLabel lb2=new JLabel("2、你所在的班级是:"); JTextField tf2=new JTextField(10); JPanel p3=new JPanel(); p3.add(lb2); p3.add(tf2); lb1.setBounds(1,5,10,2); tf1.setBounds(1,7,10,2); JLabel lb3=new JLabel("3、你的学号是:"); JTextField tf3=new JTextField(10); JPanel p4=new JPanel(); p4.add(lb3); p4.add(tf3); lb1.setBounds(1,9,10,2); tf1.setBounds(1,11,10,2); JLabel lb4=new JLabel("4、你想借阅的图书是:"); JTextField tf4=new JTextField(10); JPanel p5=new JPanel(); p5.add(lb4); p5.add(tf4); lb1.setBounds(1,13,10,2); tf1.setBounds(1,15,10,2); JLabel lb5=new JLabel("是否提交?",10); f.setLayout(new GridLayout(5, 1)); f.add(p2 ); f.add(p3 ); f.add(p4 ); f.add(p5 ); f.add(p1 ); f.setSize(500,500); f.setVisible(true); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
zycxnanwang 2016-09-20
  • 打赏
  • 举报
回复
首先你主窗口都没有布局管理器,还有panel是不能独立显示的窗口,各个panel没有布局,还有frame尺寸太小,
逗泥丸的平方 2016-09-20
  • 打赏
  • 举报
回复
最后加个pack();先看看. 写代码时候(尤其是画面这种)先写一点看看,可以用了再大规模的写下去,别稀里糊涂写到最后发现不能用,又要从头改. 默认的应该是流布局(flow),所以显示出来会比较奇怪, 而且你没有指定大小,java比较推荐的方式,感觉是设置控件的大小(使用Dimension之类的),然后把容器"撑大",然而写代码的话,感觉还是指定大小比较容易. 关于布局就要慢慢看了... 边看边试估计一个下午又过去了 个人感觉java自带的,BorderLayout和Grid还算好用.. java的布局基本上都需要panel装panel了.加油吧. 另外推荐一下miglayout

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧