当前位置:  技术问答>java相关

做个类似于单击按钮可取消操作的例子

    来源: 互联网  发布时间:2015-03-05

    本文导语:  做个类似于单击按钮可取消操作的例子或有这方面的代码分都给他 比如,有个lable正在倒计数(并显示出),期间按取消按钮可中止。 | 要用到多线程吧 //MyUI.java import javax.swing.*; import java.awt.*; import j...

做个类似于单击按钮可取消操作的例子或有这方面的代码分都给他
比如,有个lable正在倒计数(并显示出),期间按取消按钮可中止。

|
要用到多线程吧
//MyUI.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class MyUI{
    public static void main(String args[]){
        JF jf = new JF();
    }
};

class JF implements ActionListener,Runnable{
    private JFrame jf;
    private JButton jb;
    private JLabel jl;
    public JF(){
        jf = new JFrame("hello");       
        jb = new JButton("begin");
        jl = new JLabel("");
        Container cp = jf.getContentPane();
        cp.setLayout(new GridLayout(2,1));
        jb.addActionListener(this);
        cp.add(jb);
        cp.add(jl);
        jf.pack();
        jf.setVisible(true);        
    }
    public void actionPerformed(ActionEvent ae){
        if(ae.getActionCommand()=="begin"){
            jb.setText("stop");
            shouldStop = false;
            Thread t = new Thread(this);
            t.start();
            
        }else{
            jb.setText("begin");
            shouldStop = true;
        }
    }    
    
    private boolean shouldStop = false;    
    public void run(){
        int i=0;
        while(!shouldStop){
            i++;
            jl.setText(String.valueOf(i));     
            jf.repaint();     
        }
    }
    
};

|
下面是一个利用按钮控制行为的实例,修改以下就可以满足你的要求


//MyUI.java

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

class JP 
extends JPanel
implements ActionListener
{
public JP()  
{
//对象定义区
BUTFirst=new JButton("First");  
BUTSecond=new JButton("Second");
LBLInfo=new JLabel("Label1");
//对象显示区
add(BUTFirst);
add(BUTSecond);
add(LBLInfo);
//注册事件监听器
BUTFirst.addActionListener(this);
BUTSecond.addActionListener(this);
}

public void actionPerformed(ActionEvent evt)
{
/*按事件对象的命令字段获取对象源,不利于处理多语言的国际程序
String source=evt.getActionCommand();
 if (source=="First")
 {
LBLInfo.setText("你按的是第一个按钮");
                                    //上面的这行代码按你的要求修改
 }
 else if (source=="Second")
 {
LBLInfo.setText("你按的是第二个按钮");
                                    //上面的这行代码按你的要求修改
 }

repaint();*/
//按事件对象辨别事件源
Object sourceObj=evt.getSource();

if (sourceObj==BUTFirst)
{
LBLInfo.setText("你按的是第一个按钮");
}
else if (sourceObj==BUTSecond)
{
LBLInfo.setText("你按的是第二个按钮");
}

repaint();
}

/*public void paintConponent(Graphics g)
{

g.drawString("test Frame",0,0);
}*/

private JButton BUTFirst;
private JButton BUTSecond;
private JLabel LBLInfo;
};

class FrmTest
extends JFrame

{
public FrmTest()
{
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){System.exit(0);}
});//利用内部类实现窗口监听接口的适配器类
setSize(200,200);
setLocation(200,200);
Container content=getContentPane();
content.add(new JP());
}

};

public class  MyUI
{
public static void main(String[] args) 
{
 FrmTest test=new FrmTest();
 test.show();
}
}


/*--by bookbobby(书呆)-+
 |            |
 |  你说爱我只是习惯  |
 |  再也不是喜欢    |
 |  我给你的爱     |
 |  已不再温暖     |
 |            |
 +--by bookbobby(书呆)-*/


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 求一个使用tcp协议传送类似数据库表的二维数组的例子。每条记录上的字段数据类型不一定一样。
  • Python中类似printf的字符串格式化详解
  • 如何在UNIX的C编程中使用类似VC里面的TRACE宏?或者有没有类似功能?
  • 请问Linux字下有没有类似于Dos下Turbo C的集成环境编辑器?如果没有,有一个类似Dos的Edit编辑器都不错,至少有下拉菜单.
  • 诸位写驱动是先找一个类似的程序更改还是从头些?
  • shell如何做成类似java的List
  • 急:哪位用过partition magic,或类似工具,先谢了?100分
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • 类似Digg的CMS系统 Pligg
  • 类似Twitter的登录框
  • 类似telnet 的BBS的服务器端如何编?
  • 类似于top
  • 请问在redhat9下有类似于vc的开发环境吗
  • aix 和什么系统比较类似?
  • 红旗LINUX 如何进入类似于DOS的命令界面啊
  • 类似于 windows7 下 Purble Pairs 的小游戏 翻一下小游戏
  • 类似于Shell界面下setup命令的文本模式菜单用C语言如何实现
  • 请教java中如何实现vb中chr() ,asc() 类似的功能?
  • JAVA里有没有类似SLEEP的函数?
  • Java有类似的“MSDN”吗?
  • 如何用JAVA做类似服务的一类程序?
  • 如何实现类似PHP.PB等语言中eval的函数功能?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3