// 程序J04_FrameThread.java: 事件处理机制
//<HTML>
//<TITLE> 网页文件:J0_FrameThread.html </TITLE>
//<Applet code="J04_FrameThread.class"height=200 width=300>
//</Applet>
//</HTML>
import javax.swing.*; //插入javax.swing包
import java.awt.*; //插入java.awt包
import java.awt.event.*; //插入java.awt.event包
//下面代码创建JPanel面板
class MyComponent extends JApplet
{
JPanel panelObj;
FlowLayout layoutObj; JLabel label1;
JTextField textf1; //文本框
JLabel label2;
JTextField textf2; //文本框
JLabel label3;
JTextField textf3; //文本框
JButton button1;
JButton button2;
public MyComponent()
{
panelObj=new JPanel();
getContentPane().add(panelObj);
layoutObj=new FlowLayout(FlowLayout.CENTER,15,5) ;
panelObj.setLayout(layoutObj); label1=new JLabel("输出数字 1-26 :");
textf1=new JTextField(8);
label2=new JLabel("输出字母 A-Z :");
textf2=new JTextField(8);
label3=new JLabel("输出数字和字母:");
textf3=new JTextField(8);
button1=new JButton("开始线程");
button2=new JButton("停止线程");
button2.setEnabled(false); //不使能,默认使能
panelObj.add(label1);
panelObj.add(textf1);
panelObj.add(label2);
panelObj.add(textf2);
panelObj.add(label3);
panelObj.add(textf3);
panelObj.add(button1);
panelObj.add(button2);
}
} //下面代码创建事件类EventTest,为按钮添加事件
public class J04_FrameThread extends MyComponent
{
ButtonEvent bEObj;
public void init()
{
bEObj=new ButtonEvent(); //创建事件类对象
button1.addActionListener(bEObj); //注册监听器
button2.addActionListener(bEObj); //注册监听器
}
//下面为一个内部类,编写线程2代码
class subThread1 extends Thread //线程1
{
public void run() //重写run()方法,输出1~26
{
for(int i=1;i<=26;i++)
{
textf1.setText(Integer.toString(i));
textf3.setText(Integer.toString(i));
try
{
sleep(1000);
}
catch(InterruptedException e){}
if(thread1==null)
break;
}
}
}
//下面为一个内部类,编写线程2代码
class subThread2 extends Thread
{
public void run() //重写run()方法,输出A~Z
{
for(char ch='A';ch<='Z';ch++)
{
textf2.setText(Character.toString(ch));
textf3.setText(Character.toString(ch));
try
{
sleep(1000);
}
catch(InterruptedException e){}
if(thread2==null)
break;
}
}
}
//下面为一个内部类,编写按钮事件处理代码
subThread1 thread1;
subThread2 thread2;
class ButtonEvent implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Object obj=e.getSource();
if(obj==button1)
{
getAppletContext().showStatus("线程正在运行!");
button2.setEnabled(true);
button1.setEnabled(false);
if(thread1==null)
{
thread1=new subThread1();
thread1.start();
}
if(thread2==null)
{
thread2=new subThread2();
thread2.start();
}
}
if(obj==button2)
{
getAppletContext().showStatus("线程结束运行!");
if(thread1.isAlive())
{
thread1=null;
}
if(thread2.isAlive())
{
thread2=null;
}
button2.setEnabled(false);
button1.setEnabled(true);
}
}
}
}
帮忙看看这个代码有问题没?编译能通过,但用appletviewer运行时没反映,看不见主界面 MyComponent类对象是在什么时候构造的?组建对象什么时候被构造的?好象这个代码上没有啊
这个是《java语言编程基础教程》第11章上一个例子,感觉有问题
//<HTML>
//<TITLE> 网页文件:J0_FrameThread.html </TITLE>
//<Applet code="J04_FrameThread.class"height=200 width=300>
//</Applet>
//</HTML>
import javax.swing.*; //插入javax.swing包
import java.awt.*; //插入java.awt包
import java.awt.event.*; //插入java.awt.event包
//下面代码创建JPanel面板
class MyComponent extends JApplet
{
JPanel panelObj;
FlowLayout layoutObj; JLabel label1;
JTextField textf1; //文本框
JLabel label2;
JTextField textf2; //文本框
JLabel label3;
JTextField textf3; //文本框
JButton button1;
JButton button2;
public MyComponent()
{
panelObj=new JPanel();
getContentPane().add(panelObj);
layoutObj=new FlowLayout(FlowLayout.CENTER,15,5) ;
panelObj.setLayout(layoutObj); label1=new JLabel("输出数字 1-26 :");
textf1=new JTextField(8);
label2=new JLabel("输出字母 A-Z :");
textf2=new JTextField(8);
label3=new JLabel("输出数字和字母:");
textf3=new JTextField(8);
button1=new JButton("开始线程");
button2=new JButton("停止线程");
button2.setEnabled(false); //不使能,默认使能
panelObj.add(label1);
panelObj.add(textf1);
panelObj.add(label2);
panelObj.add(textf2);
panelObj.add(label3);
panelObj.add(textf3);
panelObj.add(button1);
panelObj.add(button2);
}
} //下面代码创建事件类EventTest,为按钮添加事件
public class J04_FrameThread extends MyComponent
{
ButtonEvent bEObj;
public void init()
{
bEObj=new ButtonEvent(); //创建事件类对象
button1.addActionListener(bEObj); //注册监听器
button2.addActionListener(bEObj); //注册监听器
}
//下面为一个内部类,编写线程2代码
class subThread1 extends Thread //线程1
{
public void run() //重写run()方法,输出1~26
{
for(int i=1;i<=26;i++)
{
textf1.setText(Integer.toString(i));
textf3.setText(Integer.toString(i));
try
{
sleep(1000);
}
catch(InterruptedException e){}
if(thread1==null)
break;
}
}
}
//下面为一个内部类,编写线程2代码
class subThread2 extends Thread
{
public void run() //重写run()方法,输出A~Z
{
for(char ch='A';ch<='Z';ch++)
{
textf2.setText(Character.toString(ch));
textf3.setText(Character.toString(ch));
try
{
sleep(1000);
}
catch(InterruptedException e){}
if(thread2==null)
break;
}
}
}
//下面为一个内部类,编写按钮事件处理代码
subThread1 thread1;
subThread2 thread2;
class ButtonEvent implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Object obj=e.getSource();
if(obj==button1)
{
getAppletContext().showStatus("线程正在运行!");
button2.setEnabled(true);
button1.setEnabled(false);
if(thread1==null)
{
thread1=new subThread1();
thread1.start();
}
if(thread2==null)
{
thread2=new subThread2();
thread2.start();
}
}
if(obj==button2)
{
getAppletContext().showStatus("线程结束运行!");
if(thread1.isAlive())
{
thread1=null;
}
if(thread2.isAlive())
{
thread2=null;
}
button2.setEnabled(false);
button1.setEnabled(true);
}
}
}
}
帮忙看看这个代码有问题没?编译能通过,但用appletviewer运行时没反映,看不见主界面 MyComponent类对象是在什么时候构造的?组建对象什么时候被构造的?好象这个代码上没有啊
这个是《java语言编程基础教程》第11章上一个例子,感觉有问题
解决方案 »
- 关于ArrayList的问题:
- 一个很简单的问题:怎么把一个java的项目导出成eclipse application
- 视频监控用jmf行吗?
- 怎么把java3d导出图片
- 请问下import
- 一个installanywhere的问题,高手帮忙啊
- 小小问题:Unsupported encoding:gb2312 谢谢!
- 怎么用java打开dbf格式的文件,修改其中的内容保存,它跟读写txt文件有区别吗??
- 有关输入输出的Applet的问题(超级疑惑)
- :#################一个匹配问题11
- 我要撤退了,大家掩护
- 今天是七七事变纪念日 让我们勿忘国耻 同时悼念那些已逝的同胞们!!!!!
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;//组件和布局
class MyComponent extends JApplet
{
JPanel panelObj;
FlowLayout layoutObj;
JLabel label1;
JTextField textf1;
JLabel label2;
JTextField textf2;
JLabel label3;
JTextField textf3;
JButton button1;
JButton button2;
public MyComponent()
{
panelObj=new JPanel();
getContentPane().add(panelObj);
layoutObj=new FlowLayout(FlowLayout.CENTER,15,10);
label1=new JLabel("输出数字1~26:");
textf1=new JTextField(8);
label2=new JLabel("输出字母A~Z:");
textf2=new JTextField(8);
label3=new JLabel("输出数字和字母:");
textf3=new JTextField(8);
button1=new JButton("开始线程");
button2=new JButton("停止线程");
button2.setEnabled(true);
panelObj.add(label1);
panelObj.add(textf1);
panelObj.add(label2);
panelObj.add(textf2);
panelObj.add(label3);
panelObj.add(textf3);
panelObj.add(button1);
panelObj.add(button2);
}
}//事件类
public class TT extends MyComponent
{
ButtonEvent bEObj;
public void init()
{
bEObj=new ButtonEvent();//按钮事件对象
button1.addActionListener(bEObj);//为组件注册监听器
button2.addActionListener(bEObj);
}//内部类
class subThread1 extends Thread //线程1
{
public void run() //重写run()
{
for(int i=1;i<=26;i++)
{
textf1.setText(Integer.toString(i));
textf3.setText(Integer.toString(i));
try
{
sleep(1000);
}
catch(InterruptedException e){ }
if(thread1==null)
break;
}
}
}
//内部类
class subThread2 extends Thread //线程2
{
public void run()
{
for(char ch='A';ch<='Z';ch++)
{
textf2.setText(Character.toString(ch));
textf3.setText(Character.toString(ch));
try
{
sleep(1000);
}
catch(InterruptedException e){ }
if(thread2==null)
break;
}
}
} subThread1 thread1;
subThread2 thread2;
class ButtonEvent implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Object obj=e.getSource();//获得当前组件对象
if(obj==button1)//点开始线程按钮后
{
getAppletContext().showStatus("线程正在运行");//状态栏的提示信息
button2.setEnabled(true);
button1.setEnabled(false);
if(thread1==null)
{
thread1=new subThread1();
thread1.start();
}
if(thread2==null)
{
thread2=new subThread2();
thread2.start();
}
}
if(obj==button2)
{
getAppletContext().showStatus("线程结束运行!");
if(thread1.isAlive())
{
thread1=null;
}
if(thread2.isAlive())
{
thread2=null;
}
button2.setEnabled(false);
button1.setEnabled(true);
}
}
}
}
/*
public class TT extends EventTest
{
public void init()
{
new TT();
}
}
*/