关于线程wait的问题,向各位大侠求救!!!!! 找了半天,也只看到一个button 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对不起,发错了。^_^·请原谅。应为三个按钮,原程序为:import java.awt.*;import javax.swing.*;import java.awt.event.*;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2002</p> * <p>Company: </p> * @author unascribed * @version 1.0 */public class Frame4 extends JFrame{ private JPanel jPanel1 = new JPanel(); private JToggleButton jToggleButton1 = new JToggleButton(); private ImagePanel jPanel=new ImagePanel(); private drawPanel dPanel=new drawPanel(); private JToggleButton jToggleButton2 = new JToggleButton(); private Thread t=new Thread(dPanel); private Integer dump=new Integer(0); private JToggleButton jToggleButton3 = new JToggleButton(); public Frame4() { setSize(800,600); setTitle("Thread"); try { jbInit(); this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { if(e.getID()==WindowEvent.WINDOW_CLOSING) System.exit(0); //System.getProperties(); } }); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Frame4 frame=new Frame4(); frame.show(); } private void jbInit() throws Exception { jToggleButton1.setText("start"); jToggleButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jToggleButton1_actionPerformed(e); } }); jToggleButton2.setText("suspend"); jToggleButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jToggleButton2_actionPerformed(e); } }); jToggleButton3.setText("resume"); jToggleButton3.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jToggleButton3_actionPerformed(e); } }); jPanel1.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseReleased(MouseEvent e) { jPanel1_mouseReleased(e); } }); this.getContentPane().add(jPanel1, BorderLayout.SOUTH); jPanel1.add(jToggleButton1, null); jPanel1.add(jToggleButton2, null); jPanel1.add(jToggleButton3, null); this.getContentPane().add(dPanel, BorderLayout.CENTER); } void jToggleButton1_actionPerformed(ActionEvent e) { // jPanel1.setVisible(false); t.start(); } void jToggleButton2_actionPerformed(ActionEvent e) { try { dPanel.checkSuspened(); } catch(InterruptedException ev) {ev.printStackTrace();} // t.start(); // if(!(t.isInterrupted())) // System.out.println("ok"); } void jToggleButton3_actionPerformed(ActionEvent e) { if(t.isAlive()) { dPanel.requestResume(); } } void jPanel1_mouseReleased(MouseEvent e) { jPanel1.setBackground(new Color(0,250,0)); }}class drawPanel extends JPanel implements Runnable{ int xCenter=150; MyChar[] str = new MyChar[20]; int yStep = 0; boolean suspendRequested=true; public drawPanel() { for(int i=0;i<str.length;i++) { str[i] = new MyChar(i,(char)(65+i)); } setPos(); } public void run() { Thread t=Thread.currentThread(); while(true) { setPos(); this.repaint(); try { t.sleep(300); } catch(Exception ev) { ev.printStackTrace(); } } } synchronized void checkSuspened() throws InterruptedException { while(suspendRequested) { this.wait(); } } synchronized void requestResume() { suspendRequested=false; this.notifyAll(); } public void paint(Graphics g) { super.paint(g); g.setColor(Color.white); g.fillRect(0,0,400,500); g.setColor(Color.blue); for(int i=0;i<str.length;i++) { str[i].draw(g); } } public void setPos() { yStep+=3; for(int i=0;i<str.length;i++) { str[i].setPosition(300-(20-i*2+yStep)); } } class MyChar { int x,y; char ch; int index = 0; boolean direct = false; public MyChar(int index,char ch) { this.ch = ch; this.index = index; } public void setPosition(int y) { if(direct) { index++; if(index == str.length) direct = false; } else { index--; if(index == 0) direct = true; } this.x = (int)(Math.cos(((double)((index/10.0f)*Math.PI))) * 40.0f)+xCenter; this.y = y; } public void draw(Graphics g) { g.drawString(new String(new char[]{ch}),x,y); } }}请指点。谢谢!! import java.awt.*;import java.awt.event.*;import javax.swing.*;public class graphicFrame extends JFrame implements Runnable { private JPanel contentPane; private BorderLayout borderLayout1 = new BorderLayout(); private JButton jButton1 = new JButton(); private MyPanel panel1 = new MyPanel(); Thread myThread = null; MyChar[] str = new MyChar[20]; int yStep = 0; int xCenter = 150; boolean flag; //Construct the frame public graphicFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { contentPane = (JPanel) this.getContentPane(); jButton1.setText("开始"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent e) { jButton1_actionPerformed(e); } }); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(400, 423)); this.setTitle("Frame Title"); contentPane.add(jButton1, BorderLayout.SOUTH); contentPane.add(panel1, BorderLayout.CENTER); //initial for(int i=0;i<str.length;i++) { str[i] = new MyChar(i,(char)(65+i)); } setPos(); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } public void run() { Thread theThread = Thread.currentThread(); while(flag) { setPos(); panel1.repaint(); try { theThread.sleep(300); } catch(InterruptedException ie) { ie.printStackTrace(); } } } public void setPos() { yStep+=3; for(int i=0;i<str.length;i++) { str[i].setPosition(300-(20-i*2+yStep)); } } void jButton1_actionPerformed(ActionEvent e) { if(myThread == null) { flag=true; myThread = new Thread(this); myThread.start(); }else{ flag=false; myThread=null; } } class MyChar { int x,y; char ch; int index = 0; boolean direct = false; public MyChar(int index,char ch) { this.ch = ch; this.index = index; } public void setPosition(int y) { if(direct) { index++; if(index == str.length) direct = false; } else { index--; if(index == 0) direct = true; } this.x = (int)(Math.cos(((double)((index/10.0f)*Math.PI))) * 40.0f)+xCenter; this.y = y; } public void draw(Graphics g) { g.drawString(new String(new char[]{ch}),x,y); } } class MyPanel extends JPanel { public MyPanel() { } public void paint(Graphics g) { g.setColor(Color.white); g.fillRect(0,0,400,500); g.setColor(Color.blue); for(int i=0;i<str.length;i++) { str[i].draw(g); } } } public static void main(String[] args) { graphicFrame frame = new graphicFrame(); frame.validate(); frame.setVisible(true); }}//记着给点分,我正努力加分呢 请问发帖问题 小弟有关正则表达式的问题,各位大神求解 求一些 JTable表格更改事件的示例代码 求一正则表达式 请各位高手指教!! 小程序 菜鸟问题 system.out.write怎么不行?多谢! 为什么找不到我的bean?(都有分!) 很急!! 请教!用java处理一段数据 用JAVA开发短信业务的问题 奇怪,Java中如何判别一个没有明确说明会抛出异常的函数到底会不会抛出异常
应为三个按钮,原程序为:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2002</p>
* <p>Company: </p>
* @author unascribed
* @version 1.0
*/public class Frame4 extends JFrame
{
private JPanel jPanel1 = new JPanel();
private JToggleButton jToggleButton1 = new JToggleButton();
private ImagePanel jPanel=new ImagePanel();
private drawPanel dPanel=new drawPanel();
private JToggleButton jToggleButton2 = new JToggleButton();
private Thread t=new Thread(dPanel);
private Integer dump=new Integer(0);
private JToggleButton jToggleButton3 = new JToggleButton();
public Frame4() {
setSize(800,600);
setTitle("Thread");
try {
jbInit();
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if(e.getID()==WindowEvent.WINDOW_CLOSING)
System.exit(0);
//System.getProperties();
}
});
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Frame4 frame=new Frame4();
frame.show();
}
private void jbInit() throws Exception {
jToggleButton1.setText("start");
jToggleButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jToggleButton1_actionPerformed(e);
}
});
jToggleButton2.setText("suspend");
jToggleButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jToggleButton2_actionPerformed(e);
}
});
jToggleButton3.setText("resume");
jToggleButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jToggleButton3_actionPerformed(e);
}
});
jPanel1.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseReleased(MouseEvent e) {
jPanel1_mouseReleased(e);
}
});
this.getContentPane().add(jPanel1, BorderLayout.SOUTH);
jPanel1.add(jToggleButton1, null);
jPanel1.add(jToggleButton2, null);
jPanel1.add(jToggleButton3, null);
this.getContentPane().add(dPanel, BorderLayout.CENTER);
} void jToggleButton1_actionPerformed(ActionEvent e)
{ // jPanel1.setVisible(false);
t.start(); } void jToggleButton2_actionPerformed(ActionEvent e)
{
try
{ dPanel.checkSuspened();
}
catch(InterruptedException ev)
{ev.printStackTrace();} // t.start();
// if(!(t.isInterrupted()))
// System.out.println("ok");
} void jToggleButton3_actionPerformed(ActionEvent e) {
if(t.isAlive())
{
dPanel.requestResume(); } } void jPanel1_mouseReleased(MouseEvent e) {
jPanel1.setBackground(new Color(0,250,0));
}
}
class drawPanel extends JPanel implements Runnable{
int xCenter=150;
MyChar[] str = new MyChar[20];
int yStep = 0;
boolean suspendRequested=true;
public drawPanel()
{
for(int i=0;i<str.length;i++) {
str[i] = new MyChar(i,(char)(65+i));
}
setPos(); }
public void run()
{
Thread t=Thread.currentThread();
while(true)
{
setPos();
this.repaint();
try
{
t.sleep(300);
}
catch(Exception ev)
{
ev.printStackTrace();
} } }
synchronized void checkSuspened() throws InterruptedException
{
while(suspendRequested)
{
this.wait();
} }
synchronized void requestResume()
{
suspendRequested=false;
this.notifyAll(); }
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.white);
g.fillRect(0,0,400,500);
g.setColor(Color.blue);
for(int i=0;i<str.length;i++) {
str[i].draw(g);
}
}
public void setPos() {
yStep+=3;
for(int i=0;i<str.length;i++) {
str[i].setPosition(300-(20-i*2+yStep));
}
}
class MyChar {
int x,y;
char ch;
int index = 0;
boolean direct = false; public MyChar(int index,char ch) {
this.ch = ch;
this.index = index;
} public void setPosition(int y) {
if(direct) {
index++;
if(index == str.length)
direct = false;
} else {
index--;
if(index == 0)
direct = true;
}
this.x = (int)(Math.cos(((double)((index/10.0f)*Math.PI))) * 40.0f)+xCenter;
this.y = y;
} public void draw(Graphics g) {
g.drawString(new String(new char[]{ch}),x,y);
}
}
}
请指点。谢谢!!
import java.awt.event.*;
import javax.swing.*;public class graphicFrame extends JFrame implements Runnable {
private JPanel contentPane;
private BorderLayout borderLayout1 = new BorderLayout();
private JButton jButton1 = new JButton();
private MyPanel panel1 = new MyPanel();
Thread myThread = null;
MyChar[] str = new MyChar[20];
int yStep = 0;
int xCenter = 150;
boolean flag; //Construct the frame
public graphicFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
jButton1.setText("开始");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
jButton1_actionPerformed(e);
}
});
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 423));
this.setTitle("Frame Title");
contentPane.add(jButton1, BorderLayout.SOUTH);
contentPane.add(panel1, BorderLayout.CENTER); //initial
for(int i=0;i<str.length;i++) {
str[i] = new MyChar(i,(char)(65+i));
}
setPos();
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING)
{
System.exit(0);
}
} public void run() {
Thread theThread = Thread.currentThread(); while(flag) {
setPos();
panel1.repaint();
try {
theThread.sleep(300);
} catch(InterruptedException ie) {
ie.printStackTrace();
}
}
} public void setPos() {
yStep+=3;
for(int i=0;i<str.length;i++) {
str[i].setPosition(300-(20-i*2+yStep));
}
} void jButton1_actionPerformed(ActionEvent e) {
if(myThread == null) {
flag=true;
myThread = new Thread(this);
myThread.start();
}else{
flag=false;
myThread=null;
}
} class MyChar {
int x,y;
char ch;
int index = 0;
boolean direct = false; public MyChar(int index,char ch) {
this.ch = ch;
this.index = index;
} public void setPosition(int y) {
if(direct) {
index++;
if(index == str.length)
direct = false;
} else {
index--;
if(index == 0)
direct = true;
}
this.x = (int)(Math.cos(((double)((index/10.0f)*Math.PI))) * 40.0f)+xCenter;
this.y = y;
} public void draw(Graphics g) {
g.drawString(new String(new char[]{ch}),x,y);
}
} class MyPanel extends JPanel {
public MyPanel() {
} public void paint(Graphics g) {
g.setColor(Color.white);
g.fillRect(0,0,400,500);
g.setColor(Color.blue);
for(int i=0;i<str.length;i++) {
str[i].draw(g);
}
}
} public static void main(String[] args) {
graphicFrame frame = new graphicFrame();
frame.validate();
frame.setVisible(true);
}
}//记着给点分,我正努力加分呢