「Java/swing/サンプル/JSliderサンプル プログラムから操作する時にイベントを発生させない」の編集履歴(バックアップ)一覧はこちら

Java/swing/サンプル/JSliderサンプル プログラムから操作する時にイベントを発生させない」(2012/12/16 (日) 00:01:05) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

* 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()); } } }}

表示オプション

横に並べて表示:
変化行の前後のみ表示: