已有101人关注
关于Java入门经典第14章的一些问题
发表在Java图书答疑 2015-08-24
是否精华
版块置顶:
public class JTabbedTest extends JFrame{
private JTextArea textArea;
public JTabbedTest(){
super();
setTitle("选项卡");
setBounds(100,100,400,200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JTabbedPane jtp=new JTabbedPane();
final JButton button=new JButton("按钮");
button.setBounds(20,20,40,20);
URL url1=JTabbedTest.class.getResource("1.png"); 
Icon icon=new ImageIcon(url1);
jtp.addTab("选项卡1",icon,button,"这里使用了按钮");

final JCheckBox checkbox=new JCheckBox("复选框");
jtp.addTab("选项卡2", null, checkbox, null);
URL url2=JTabbedTest.class.getResource("2.gif");
Icon icon2=new ImageIcon(url2);
jtp.setIconAt(1, icon2);

textArea =new JTextArea("文本域");
URL url3=JTabbedTest.class.getResource("3.gif");
Icon icon3=new ImageIcon(url3);
jtp.addTab("选项卡3", icon3, textArea, null);
jtp.setToolTipTextAt(2, "这里使用了文本框");

final JRadioButton radioButton=new JRadioButton("单选按钮");
URL url4=JTabbedTest.class.getResource("4.gif");
Icon icon4=new ImageIcon(url4);
jtp.addTab("选项卡4", icon4, radioButton, null);
jtp.setToolTipTextAt(3, "这里使用了单选按钮");

getContentPane().add(jtp, BorderLayout.CENTER);

}
public static void main(String[] args){
EventQueue.invokeLater(new Runnable() {
public void run() {
try{
JTabbedTest jtt=new JTabbedTest();
jtt.setVisible(true);
}catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
代码如上:
(1)EventQueue.invokeLater(new Runnable() {
public void run() {
try{
JTabbedTest jtt=new JTabbedTest();
jtt.setVisible(true);
}catch (Exception e) {
e.printStackTrace();
}
}
});
我对这段代码不是肯了解,第一:为什么要加入EventQueue呢?有什么好处  第二:这个属于匿名内部类吗?  第三new Runnable() {...}属于什么方法?

(2)super();这边的super();调用父类的方法有何作用?
(3)我把这句话getContentPane().add(jtp, BorderLayout.CENTER);改成
     JFrame jf=new JFrame();
     Container container=jf.getContentPane();
     container.setLayout(null);
     jf.add(jtp);
     却不能用,为什么?
分享到:
精彩评论 1
菜鸟级精英
学分:0 LV1
TA的每日心情
开心
2020-03-23 21:05:48
2015-08-25
沙发
(1)这段代码是WindoBuilder插件自动生成的,用来创建一个固定的线程给窗口使用的,避免多线程操作同一个窗口而发生故障。
new Runnable(){  }这就是创建并实例化了一个Runnable的匿名内部类。
(2)super();是调用父类构造方法,也是代码自动生成的。如果不写这行代码,系统也会默认执行父类无参构造方法。
(3)你可能对Swing开发并不熟悉。
JFrame jf=new JFrame();//这是你创建的一个窗口对象
Container container=jf.getContentPane();//你获取了创建的窗口对象的容器
container.setLayout(null);//给这个容器定义了null的显示样式
jf.add(jtp);//将选项卡面板放到你创建的容器中
//问题:你没有显示这个窗口,窗口一直都是不可见状态。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照