关于SWING组件的

u010818586 2017-09-21 11:30:02
package chapter13;
import java.awt.*;
import javax.swing.*;
public class C131
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
class myframe extends JFrame
{
myframe()
{
JFrame jf=new JFrame();
this.setSize(500, 500);
Container con=jf.getContentPane();
JCheckBox c1=new JCheckBox("男");
JCheckBox c2=new JCheckBox("女");
JButton b1=new JButton("确定");
JButton b2=new JButton("取消");
String str[]= {"红","黄","绿","蓝"};
@SuppressWarnings({ "rawtypes", "unchecked" })
JComboBox jcb=new JComboBox(str);
setLayout(new GridLayout(3,1,50,50));
JPanel p1=new JPanel();
JPanel p2=new JPanel(new GridLayout(1,2,50,50));
JPanel p3=new JPanel(new GridLayout(1,2,50,50));
p1.add( jcb);//下拉列表
p2.add(c1, c2);
p3.add(b1, b2);
con.add(p1);
con.add(p2);
con.add(p3);
this.setVisible(true);

}
}
new myframe();
}

}

运行之后只有窗体?小白轻喷
...全文
329 14 打赏 收藏 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010818586 2017-09-26
  • 打赏
  • 举报
回复
还有个问题,比如我添加10个按钮,jb1~jb10,想为每一个按钮添加同一单击事件:弹出一3个按钮的对话框,代码怎么优化?写10个单击事件没必要
lsl_yy 2017-09-23
  • 打赏
  • 举报
回复
引用 11 楼 u010818586 的回复:
[quote=引用 9 楼 lsl_yy 的回复:] 你的构建方法构建了两个JFrame窗口 一个是继承自JFrame 的myframe来自默认的super(), 一个是你new出来的jf,你在jf里面找容器然后添加组件 但让他继续不可见 ,让myframe可见 但是myframe是空的 没有任何组件 继承之后 进行构建的时候回默认运行一个父类的构造方法 所以不用再new一个新的JFrame 直接在this里面操作就可以
还有个问题,如果我使用边界布局,最下的两个按钮怎么添加?添加第二个会覆盖第一个[/quote]容器一次只添加一个组件试一下,两个参数的add方法应该不是添加两个组件(public void add(Component comp, Object constraints)将指定的组件添加到此容器的尾部。同时通知布局管理器使用指定的 constraints 对象将组件添加到此容器的布局中。)
lsl_yy 2017-09-23
  • 打赏
  • 举报
回复
引用 10 楼 u010818586 的回复:
[quote=引用 9 楼 lsl_yy 的回复:] 你的构建方法构建了两个JFrame窗口 一个是继承自JFrame 的myframe来自默认的super(), 一个是你new出来的jf,你在jf里面找容器然后添加组件 但让他继续不可见 ,让myframe可见 但是myframe是空的 没有任何组件 继承之后 进行构建的时候回默认运行一个父类的构造方法 所以不用再new一个新的JFrame 直接在this里面操作就可以
哦...明白了,就是继承过来的时候默认调用父类构造方法,也就是super(),调用完后产生了一个JFrame窗口?,之后我又new了另一个窗口?但是新建的这个窗口并没有做任何事,反而添加组件都是添加在Super()产生的JFrame里?[/quote]不是相反了 你在你new的窗口里面进行添加 super()产生的没有做任何事情 最后一句是this.setVisible就是说让 super()的进行可见操作 new出来的还是默认的不可见
u010818586 2017-09-22
  • 打赏
  • 举报
回复
引用 9 楼 lsl_yy 的回复:
你的构建方法构建了两个JFrame窗口 一个是继承自JFrame 的myframe来自默认的super(), 一个是你new出来的jf,你在jf里面找容器然后添加组件 但让他继续不可见 ,让myframe可见 但是myframe是空的 没有任何组件 继承之后 进行构建的时候回默认运行一个父类的构造方法 所以不用再new一个新的JFrame 直接在this里面操作就可以
还有个问题,如果我使用边界布局,最下的两个按钮怎么添加?添加第二个会覆盖第一个
u010818586 2017-09-22
  • 打赏
  • 举报
回复
引用 9 楼 lsl_yy 的回复:
你的构建方法构建了两个JFrame窗口 一个是继承自JFrame 的myframe来自默认的super(), 一个是你new出来的jf,你在jf里面找容器然后添加组件 但让他继续不可见 ,让myframe可见 但是myframe是空的 没有任何组件 继承之后 进行构建的时候回默认运行一个父类的构造方法 所以不用再new一个新的JFrame 直接在this里面操作就可以
哦...明白了,就是继承过来的时候默认调用父类构造方法,也就是super(),调用完后产生了一个JFrame窗口?,之后我又new了另一个窗口?但是新建的这个窗口并没有做任何事,反而添加组件都是添加在Super()产生的JFrame里?
lsl_yy 2017-09-21
  • 打赏
  • 举报
回复
你的构建方法构建了两个JFrame窗口 一个是继承自JFrame 的myframe来自默认的super(), 一个是你new出来的jf,你在jf里面找容器然后添加组件 但让他继续不可见 ,让myframe可见 但是myframe是空的 没有任何组件 继承之后 进行构建的时候回默认运行一个父类的构造方法 所以不用再new一个新的JFrame 直接在this里面操作就可以
miaoch 2017-09-21
  • 打赏
  • 举报
回复
而你最后又只显示了this,如果你显示jf也是可以的
miaoch 2017-09-21
  • 打赏
  • 举报
回复
打个比方就是 你一直在帮别人擦车(new 了一个Jframe 而不是用this)
u010818586 2017-09-21
  • 打赏
  • 举报
回复
引用 5 楼 scqlmm 的回复:
[quote=引用 4 楼 u010818586 的回复:] [quote=引用 2 楼 scqlmm 的回复:] 你用错 Container con=this.getContentPane();这个了
可以了,可是为什么会错?不是把窗体转成容器么[/quote] 因为你的设置的显示不现实和窗体的大小都是设置的你继承的JFrame,但是你代码理由[/quote] ???没看懂?代码里咋了?
枫醉秋 2017-09-21
  • 打赏
  • 举报
回复
引用 4 楼 u010818586 的回复:
[quote=引用 2 楼 scqlmm 的回复:] 你用错 Container con=this.getContentPane();这个了
可以了,可是为什么会错?不是把窗体转成容器么[/quote] 因为你的设置的显示不现实和窗体的大小都是设置的你继承的JFrame,但是你代码理由
u010818586 2017-09-21
  • 打赏
  • 举报
回复
引用 2 楼 scqlmm 的回复:
你用错 Container con=this.getContentPane();这个了
可以了,可是为什么会错?不是把窗体转成容器么
u010818586 2017-09-21
  • 打赏
  • 举报
回复
引用 2 楼 scqlmm 的回复:
你用错 Container con=this.getContentPane();这个了
改了还是最小化的窗口
枫醉秋 2017-09-21
  • 打赏
  • 举报
回复
你用错 Container con=this.getContentPane();这个了
枫醉秋 2017-09-21
  • 打赏
  • 举报
回复
public static void main(String[] args) { // TODO Auto-generated method stub class myframe extends JFrame { myframe() { JFrame jf=new JFrame(); this.setSize(500, 500); Container con=this.getContentPane(); JCheckBox c1=new JCheckBox("男"); JCheckBox c2=new JCheckBox("女"); JButton b1=new JButton("确定"); JButton b2=new JButton("取消"); String str[]= {"红","黄","绿","蓝"}; @SuppressWarnings({ "rawtypes", "unchecked" }) JComboBox jcb=new JComboBox(str); setLayout(new GridLayout(3,1,50,50)); JPanel p1=new JPanel(); JPanel p2=new JPanel(new GridLayout(1,2,50,50)); JPanel p3=new JPanel(new GridLayout(1,2,50,50)); p1.add( jcb);//下拉列表 p2.add(c1, c2); p3.add(b1, b2); con.add(p1); con.add(p2); con.add(p3); this.setVisible(true); } } new myframe(); }

62,620

社区成员

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

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