可视化窗口是大部分游戏的常态,今天我们就来了解下如何编写进度条窗口,快跟小编一起看看吧。
一、在包右击new->other->WindowBuilder->JFrame->name叫Guithreadpackage guithread;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.GridLayout;
import javax.swing.JProgressBar;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GuiThread extends JFrame
{
private JPanel contentPane;
/** * Launch the application. */
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
try
{
GuiThread frame = new GuiThread();
frame.setVisible(true);
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
/** * Create the frame. */
public GuiThread()
{
setTitle("线程进度条");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new GridLayout(4, 1, 0, 0));
JProgressBar pb1 = new JProgressBar();
contentPane.add(pb1);
JProgressBar pb2 = new JProgressBar();
contentPane.add(pb2);
JButton btnNewButton = new JButton("启动");
btnNewButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
PdThread.flag = true;
PdThread pt1 = new PdThread(pb1);
pt1.start();
PdThread pt2 = new PdThread(pb2);
pt2
.start();
}
});
contentPane.add(btnNewButton);
JButton btnNewButton_1 = new JButton("暂停");
btnNewButton_1.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
PdThread.flag = false;
}
});
contentPane.add(btnNewButton_1);
}
}
二、新建PdThread类 ,Superclass写java.lang.threadpackage guithread;
import javax.sound.midi.Track;
import javax.swing.JProgressBar;
public class PdThread extends Thread
{
static boolean flag = true; //全局开关 JProgressBar jpb;
public PdThread(JProgressBar jpb)
{
this.jpb = jpb;
}
public void run()
{
while (jpb.getValue()
{
try
{
Thread.sleep((long(Math.random() * 600));
}
catch (InterruptedException e)
{ // TODO Auto-generated catch block e.printStackTrace();
}
if (PdThread.flag)
{
jpb.setValue(jpb.getValue() + 1);
}
else
{
Thread.yield(); //暂停 this.stop();//终止当前进程
}
}
}
以上就是本篇文章的所有内容,更多java常见问题及解决方法敬请关注奇Q工具网了解详情。
推荐阅读: