我是靠谱客的博主 优雅缘分,最近开发中收集的这篇文章主要介绍java 程序暂停_java – 如何暂停程序直到按下按钮?,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Pausing Execution with Sleep,虽然我怀疑这是你想要使用的机制.因此,正如其他人所建议的那样,我相信您需要实现等待通知逻辑.这是一个非常人为的例子:

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.concurrent.atomic.AtomicBoolean;

import javax.swing.JButton;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

@SuppressWarnings("serial")

public class PanelWithButton extends JPanel

{

// Field members

private AtomicBoolean paused;

private JTextArea textArea;

private JButton button;

private Thread threadObject;

/**

* Constructor

*/

public PanelWithButton()

{

paused = new AtomicBoolean(false);

textArea = new JTextArea(5, 30);

button = new JButton();

initComponents();

}

/**

* Initializes components

*/

public void initComponents()

{

// Construct components

textArea.setLineWrap(true);

textArea.setWrapStyleWord(true);

add( new JScrollPane(textArea));

button.setPreferredSize(new Dimension(100, 100));

button.setText("Pause");

button.addActionListener(new ButtonListener());

add(button);

// Runnable that continually writes to text area

Runnable runnable = new Runnable()

{

@Override

public void run()

{

while(true)

{

for(int i = 0; i < Integer.MAX_VALUE; i++)

{

if(paused.get())

{

synchronized(threadObject)

{

// Pause

try

{

threadObject.wait();

}

catch (InterruptedException e)

{

}

}

}

// Write to text area

textArea.append(Integer.toString(i) + ", ");

// Sleep

try

{

Thread.sleep(500);

}

catch (InterruptedException e)

{

}

}

}

}

};

threadObject = new Thread(runnable);

threadObject.start();

}

@Override

public Dimension getPreferredSize()

{

return new Dimension(400, 200);

}

/**

* Button action listener

* @author meherts

*

*/

class ButtonListener implements ActionListener

{

@Override

public void actionPerformed(ActionEvent evt)

{

if(!paused.get())

{

button.setText("Start");

paused.set(true);

}

else

{

button.setText("Pause");

paused.set(false);

// Resume

synchronized(threadObject)

{

threadObject.notify();

}

}

}

}

}

这是你的主要课程:

import javax.swing.JFrame;

import javax.swing.SwingUtilities;

public class MainClass

{

/**

* Main method of this application

*/

public static void main(final String[] arg)

{

SwingUtilities.invokeLater(new Runnable()

{

public void run()

{

JFrame frame = new JFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.add(new PanelWithButton());

frame.pack();

frame.setVisible(true);

frame.setLocationRelativeTo(null);

}

});

}

}

如您所见,此示例应用程序将不断写入文本区域,直到您单击“暂停”按钮,然后恢复您需要单击同一按钮,现在将显示为“开始”.

最后

以上就是优雅缘分为你收集整理的java 程序暂停_java – 如何暂停程序直到按下按钮?的全部内容,希望文章能够帮你解决java 程序暂停_java – 如何暂停程序直到按下按钮?所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部