負けてたまるか。

脳トレ、プログラミング、PHP、WEB製作などのメモ

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-) | Edit
とりあえずスレッドで学んだことを試してみる。
「start」ボタンをクリックでプログレスバーの値が上昇する。
「stop」ボタンをクリックでプログレスバーの値のストップする。

runメソッドは1回ストップしたら再開できないらしいので、
フラグとループを使って止めることにする。
(この方法で合ってるのかな?)

一応動いたので記念に保存しておきます。

値が変動するプログレスバー


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.border.TitledBorder;

import java.awt.*;

import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.BorderLayout;
import java.util.Random;

import javax.swing.border.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class Bigdog extends JFrame implements ActionListener,
MouseListener,ChangeListener,Runnable{

public static final String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
public static final String java = "javax.swing.plaf.metal.MetalLookAndFeel";
public static final String motif = "com.sun.java.swing.plaf.motif.MotifLookAndFeel";

JProgressBar bar;
JButton btn1;
JButton btn2;
JLabel lbl1;
int count;
Thread t1 = null;
boolean stopFlag = true;

public Bigdog(String s){
super(s);

JPanel p0 = new JPanel();//ベースパネル

/*
* JProgressBar
*/

bar = new JProgressBar();//プログレスバー
p0.add(bar);

/*
* 進歩状況に応じてプログレスバーの値を変動
*/

//startボタン
JButton btn1 = new JButton("Start");
btn1.setActionCommand("start");
btn1.addActionListener(this);
p0.add(btn1);

//stopボタン
JButton btn2 = new JButton("Stop");
btn2.setActionCommand("stop");
btn2.addActionListener(this);
p0.add(btn2);

add(p0);//ベースパネルをフレームに追加



}

public static void main(String[] args){
Bigdog sr = new Bigdog("JProgressBar");

try {
UIManager.setLookAndFeel(java);
SwingUtilities.updateComponentTreeUI(sr);
} catch(Exception e3){}

sr.setDefaultCloseOperation(EXIT_ON_CLOSE);
sr.setSize(220,200);
sr.setLocationRelativeTo(null);
//sr.setBounds(10,10,300,300);
//sr.setLocation(1024/2-100, 600/3);
//sr.setResizable(false);

sr.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
String cmd = arg0.getActionCommand();

if(cmd.equals("start")){
if(t1 == null){
t1 = new Thread(this);
t1.start();
} else {
stopFlag = true;
}
} else if(cmd.equals("stop")){
if(t1!=null){

stopFlag = false;

} else {

}
}
}

@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub

}

@Override
public void run() {
// TODO Auto-generated method stub


for(;;){

while(stopFlag){

count++;

if(count > 100){
count = 0;
}

bar.setValue(count);//バーの値設定

//プログレスバーの速さ(100ミリ秒で1増える)
try {
t1.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
//メモリの負担軽減
try {
t1.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}
}
関連記事












管理者にだけ表示

トラックバックURL↓
http://taro4.blog37.fc2.com/tb.php/283-50ae8e6f

| ホーム |

カレンダー

05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -

最近の記事

月別アーカイブ

タグリスト

ブログ内検索

カテゴリー

RSSフィード

リンク

ブロとも申請フォーム

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。