import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.lang.*;
/**
*
* @author Administrator
*/
public class nousexc extends JFrame{
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
javax.swing.JSplitPane jsp=new JSplitPane(JSplitPane.VERTICAL_SPLIT,false,jp1,jp2);
JLabel jl1=new JLabel("999999");
JButton jb1=new JButton("面板1递减");
JButton jb2=new JButton("面板2递增");
JLabel jl2=new JLabel("0");
/** Creates a new instance of nousexc */
public nousexc() {
setSize(800,600);
add(jsp);
jp1.add(jl1);
jp1.add(jb1);
jl1.setOpaque(true);
jl1.setBackground(Color.red);
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try
{
while(java.lang.Integer.parseInt(jl1.getText())>0)
{
int changeint=Integer.parseInt(jl1.getText())-1;
jl1.setText(changeint+"");
jl1.repaint();
Thread t=new Thread();
t.sleep(1);//这样写代码后,按下按钮,介面锁死了,为何呢?
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
});
}
public static void main(String[] args)
{
nousexc nxc=new nousexc();
nxc.setVisible(true);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.lang.*;
/**
*
* @author Administrator
*/
public class nousexc extends JFrame{
JPanel jp1=new JPanel();
JPanel jp2=new JPanel();
javax.swing.JSplitPane jsp=new JSplitPane(JSplitPane.VERTICAL_SPLIT,false,jp1,jp2);
JLabel jl1=new JLabel("999999");
JButton jb1=new JButton("面板1递减");
JButton jb2=new JButton("面板2递增");
JLabel jl2=new JLabel("0");
/** Creates a new instance of nousexc */
public nousexc() {
setSize(800,600);
add(jsp);
jp1.add(jl1);
jp1.add(jb1);
jl1.setOpaque(true);
jl1.setBackground(Color.red);
jb1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
try
{
while(java.lang.Integer.parseInt(jl1.getText())>0)
{
int changeint=Integer.parseInt(jl1.getText())-1;
jl1.setText(changeint+"");
jl1.repaint();
Thread t=new Thread();
t.sleep(1);//这样写代码后,按下按钮,介面锁死了,为何呢?
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
});
}
public static void main(String[] args)
{
nousexc nxc=new nousexc();
nxc.setVisible(true);
}
}
解决方案 »
- java.lang.ClassNotFoundException:oracle.jdbc.driver.OracleDriver
- 关于ObjectOutputStream的问题(真正的高手请进)
- 怎么理解--- java尤其j2ee的技术那么多,开源又那么丰富
- 有关ClassLoader的问题
- 怎么样取出一个数据表中的字段的数据与非数据库中的数据比较
- 请大家讨论以下好的java 开发swing/awt工具,最好的免费的.
- 大家帮我提点建议吧~(可能改变我的一生啊)
- 认证模拟。
- 急!weblogic中如何配置WEB application?
- URL类的代理问题
- 这段代码帮忙分析一下
- 再问两个.java间传值
楼主【III_dont_know】截止到2008-07-17 11:19:23的历史汇总数据(不包括此帖):
发帖的总数量:24 发帖的总分数:590 每贴平均分数:24
回帖的总数量:19 得分贴总数量:2 回帖的得分率:10%
结贴的总数量:21 结贴的总分数:520
无满意结贴数:2 无满意结贴分:50
未结的帖子数:3 未结的总分数:70
结贴的百分比:87.50 % 结分的百分比:88.14 %
无满意结贴率:9.52 % 无满意结分率:9.62 %
楼主加油
用this.wait(1)试一下。
需要点一下,减一下
同时还要报错
java.lang.IllegalMonitorStateException: current thread not owner
at java.lang.Object.wait(Native Method)
at menu.nousexc$1.actionPerformed(nousexc.java:48)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1849)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2169)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:234)
at java.awt.Component.processMouseEvent(Component.java:5488)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3093)
at java.awt.Component.processEvent(Component.java:5253)
at java.awt.Container.processEvent(Container.java:1966)
at java.awt.Component.dispatchEventImpl(Component.java:3955)
at java.awt.Container.dispatchEventImpl(Container.java:2024)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4212)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3892)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3822)
at java.awt.Container.dispatchEventImpl(Container.java:2010)
at java.awt.Window.dispatchEventImpl(Window.java:1766)
at java.awt.Component.dispatchEvent(Component.java:3803)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:234)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSplitPane;/**
* @author Administrator
*/
public class nousexc extends JFrame
{
JPanel jp1 = new JPanel(); JPanel jp2 = new JPanel(); javax.swing.JSplitPane jsp = new JSplitPane(JSplitPane.VERTICAL_SPLIT, false, jp1, jp2); JLabel jl1 = new JLabel("999999"); JButton jb1 = new JButton("面板1递减"); JButton jb2 = new JButton("面板2递增"); JLabel jl2 = new JLabel("0"); /** Creates a new instance of nousexc */
public nousexc()
{
setSize(800, 600);
add(jsp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jp1.add(jl1);
jp1.add(jb1);
jl1.setOpaque(true);
jl1.setBackground(Color.red);
jb1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
// while(java.lang.Integer.parseInt(jl1.getText()) > 0)
// {
// int changeint = Integer.parseInt(jl1.getText()) - 1;
// jl1.setText(changeint + "");
// jl1.repaint();
// // 上面三行代码根本就没有在新线程里面,你用了个死循环,主线程一直在跑这个,界面当然死掉
//
// // 你这个线程在这里没有任何意义,建议你再好好看看书
// Thread t = new Thread();
// // 这个是静态方法,在这里sleep的是主线程,而不是t
// t.sleep(1);// 这样写代码后,按下按钮,介面锁死了,为何呢?
// } Thread t = new Thread()
{
public void run()
{
while(java.lang.Integer.parseInt(jl1.getText()) > 0)
{
int changeint = Integer.parseInt(jl1.getText()) - 1;
jl1.setText(changeint + "");
jl1.repaint(); try
{
sleep(1);
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}; t.start(); }
catch(Exception ex)
{
ex.printStackTrace();
}
} });
} public static void main(String[] args)
{
nousexc nxc = new nousexc();
nxc.setVisible(true);
}
}
{
public void run()
{
...
...
};请问,红色部分是一个什么写法呀???
Thread t=new Thread();已经实例化了Thread类,后边还可以去写它的方法吗?
匿名内部类好好看一下书吧,Thread t=new Thread();虽然实例化了一个Thread对象,但是没有重写里面的run()方法,所以这个线程什么也干不了。
还要要启动线程,必须调用其start()方法,否则线程也不发挥任何作用。
或者继承Thread 类
楼主的写法是什么也做不了的
int changeint = Integer.parseInt(jl1.getText()) - 1;
看上边这句话就是死循环 jl1.getText()一直是大于0的
另外你线程用法也有问题。