「Java/swing/サンプル/JSliderサンプル プログラムから操作する時にイベントを発生させない」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
* Java/swing/サンプル/JSliderサンプル プログラムから操作する時にイベントを発生させない
&ref(JSliderSample6.png)サンプルダウンロード &ref(JSliderSample6.java)
プログラムからスライダを操作した時にイベントを発生させない(キャッチしない)サンプル
一時的にイベントを発生させない方法が分からなかったので、イベントが発生する直前にリスナーを削除して
処理が終わったらリスナーを戻すようにしました。
#highlight(java){{
@Override
public void actionPerformed(ActionEvent e) {
// ChangeListenerを削除してから値を設定し、再度ChangeListenerを設定すると、
// ChangeListenerでイベントをキャッチできなくなります。
slider.removeChangeListener(this);
slider.setValue(0);
slider.addChangeListener(this);
}
}}
[[mp3プレイヤーサンプル>Java/swing/サンプル/MP3プレイヤーサンプル(JLayer,BasicPlayer,Java ID3 Tag Library)一通りの機能実装]]のシークバーに使いました。
* サンプル &ref(JSliderSample6.java)
#highlight(java){{
import java.awt.FlowLayout;
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.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// JSliderサンプル6
// プログラムからスライダを操作した時にイベントを発生させない(キャッチしない)サンプル
// 一時的にイベントを発生させない方法が分からなかったので、イベントが発生する直前にリスナーを削除して
// 処理が終わったらリスナーを戻すようにしました。
// mp3プレイヤーサンプルのシークバーに使いました。
public class JSliderSample6 extends JFrame implements ActionListener, ChangeListener {
public static void main(String[] args) {
new JSliderSample6();
}
public JSliderSample6() {
setTitle("JSliderサンプル プログラムからスライダを操作する時に、イベントを発生させない");
setBounds(200, 100, 410, 110);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
init();
setVisible(true);
}
JSlider slider = new JSlider();
JTextField textField = new JTextField(10);
JButton button1 = new JButton("ボタン1");
JButton button2 = new JButton("ボタン2");
private void init() {
add(new JLabel("プログラムからスライダを操作する時に、イベントを発生させない"));
slider.addChangeListener(this);
textField.setText("" + slider.getValue());
add(slider);
add(textField);
add(button1);
add(button2);
button1.addActionListener(this);
button2.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button2) {
// ボタン2の場合
// ChangeListenerを削除してから値を設定し、再度ChangeListenerを設定すると、
// ChangeListenerでイベントをキャッチできなくなります。
slider.removeChangeListener(this);
slider.setValue(0);
slider.addChangeListener(this);
} else {
// ボタン2の場合
slider.setValue(0);
}
}
@Override
public void stateChanged(ChangeEvent e) {
textField.setText("" + slider.getValue());
}
}
}}
* Java/swing/サンプル/JSliderサンプル プログラムから操作する時にイベントを発生させない
&ref(JSliderSample6.png)
サンプルダウンロード &ref(JSliderSample6.java)
* プログラムからスライダを操作した時にイベントを発生させない(キャッチしない)サンプル
一時的にイベントを発生させない方法が分からなかったので、
イベントが発生する直前にリスナーを削除、
処理が終わったらリスナーを戻すようにしました。
#highlight(java){{
@Override
public void actionPerformed(ActionEvent e) {
// ChangeListenerを削除してから値を設定し、再度ChangeListenerを設定すると、
// ChangeListenerでイベントをキャッチできなくなります。
slider.removeChangeListener(this);
slider.setValue(0);
slider.addChangeListener(this);
}
}}
[[mp3プレイヤーサンプル>Java/swing/サンプル/MP3プレイヤーサンプル(JLayer,BasicPlayer,Java ID3 Tag Library)一通りの機能実装]]のシークバーに使いました。
* サンプル &ref(JSliderSample6.java)
#highlight(java){{
import java.awt.FlowLayout;
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.JSlider;
import javax.swing.JTextField;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
// JSliderサンプル6
// プログラムからスライダを操作した時にイベントを発生させない(キャッチしない)サンプル
// 一時的にイベントを発生させない方法が分からなかったので、イベントが発生する直前にリスナーを削除して
// 処理が終わったらリスナーを戻すようにしました。
// mp3プレイヤーサンプルのシークバーに使いました。
public class JSliderSample6 extends JFrame implements ActionListener, ChangeListener {
public static void main(String[] args) {
new JSliderSample6();
}
public JSliderSample6() {
setTitle("JSliderサンプル プログラムからスライダを操作する時に、イベントを発生させない");
setBounds(200, 100, 410, 110);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
init();
setVisible(true);
}
JSlider slider = new JSlider();
JTextField textField = new JTextField(10);
JButton button1 = new JButton("ボタン1");
JButton button2 = new JButton("ボタン2");
private void init() {
add(new JLabel("プログラムからスライダを操作する時に、イベントを発生させない"));
slider.addChangeListener(this);
textField.setText("" + slider.getValue());
add(slider);
add(textField);
add(button1);
add(button2);
button1.addActionListener(this);
button2.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == button2) {
// ボタン2の場合
// ChangeListenerを削除してから値を設定し、再度ChangeListenerを設定すると、
// ChangeListenerでイベントをキャッチできなくなります。
slider.removeChangeListener(this);
slider.setValue(0);
slider.addChangeListener(this);
} else {
// ボタン2の場合
slider.setValue(0);
}
}
@Override
public void stateChanged(ChangeEvent e) {
textField.setText("" + slider.getValue());
}
}
}}