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

创建窗口的话需要引入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(),获取对象的类名。

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值