您的位置:首页 > 编程语言 > Java开发

Java(十四)--创建窗口,添加按钮,接受事件

2015-08-25 20:58 465 查看
创建窗口的话需要引入javax.swing.*,使用了里面的JFrame,如下

public static void main(String[] args){
JFrame frame=new JFrame("Hello World");//括号中为窗口的名称
//设置窗口关闭的方式
frame.setDefaultCloseOperation(JFrame.EXIT_IN_CLOSE);
frame.setSize(300,100);//设置窗口大小
frame.setVisible(true);//使窗口可视化,不加这一句不会出现窗口
}


这样就可以创建一个窗口了。

下面学习标签JLabel的添加

需要在JFrame的基础上使用,同时再引入java.util.concurrent.*,同时要抛出异常

public static void main(String[] args) throws Exception{
JFrame frame=new JFrame("Hello World");//括号中为窗口的名称
//设置窗口关闭的方式
frame.setDefaultCloseOperation(JFrame.EXIT_IN_CLOSE);
frame.setSize(300,100);//设置窗口大小
frame.setVisible(true);//使窗口可视化,不加这一句不会出现窗口

JLabel label=new JLabel("A Label");
frame.add(label);
TimeUnit.SECONDS.sleep(1);//程序停止一秒
label.setText("This is different");//将label重置为新的字符串
}


但是实际上我们不能像上面的代码这么写,会造成线程的冲突,所以我们要用到一个新的方法。如下

package com.kaihong;
import javax.swing.*;
import java.util.concurrent.TimeUnit;

public class TestSwing{

JLabel label;
JFrame frame;
SwingConsole sc;
public TestSwing(){
frame=new JFrame("hello swing");
sc=new SwingConsole();
sc.run(frame,300,100);
label=new JLabel("A Label");
frame.add(label);
}
static TestSwing ts;
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
/*
* 使用SwingUtilities.invokeLater(new Runnable(){...})可以将Runnable提交,
* 不会造成线程冲突
*/
SwingUtilities.invokeLater(new Runnable(){
public void run(){
ts=new TestSwing();
}
});
TimeUnit.SECONDS.sleep(1);
SwingUtilities.invokeLater(new Runnable(){
public void run(){
ts.label.setText("Hey/This is different");
}
});
}

}


不再直接在main中操作窗口,而是提交一个Runnable,就插入到事件的队列中。当运行到该Runnable时不会做其他东西。提交Runnable需要SwingUtilities.invokeLater()这个方法。

下面再讲其他几个方法。getSimpleName(),获取对象的类名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: