3

それらは実際には2 つの質問です。

最初の質問: JScrollBarAdjustmentEventの違いは何getValueIsAdjusting()ですか

違いがあるかどうかをテストするためにいくつかのコードでそれらを試しましたが、何も得られませんでした!. これは、私がそれらをどのようにテストしたかを示すコードです。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ScrollTest extends JPanel
{
    JPanel panel;
    JScrollBar scroll;

    public ScrollTest()
    {
        scroll = new JScrollBar(JScrollBar.HORIZONTAL, 0, 6, 0, 300);
        scroll.addAdjustmentListener(ScrollListener);
        panel = new JPanel(new GridLayout(1, 0));
        panel.add(scroll);
        this.setLayout(new BorderLayout());
        this.add(panel);
    }

    AdjustmentListener ScrollListener = new AdjustmentListener()
    {
        @Override
        public void adjustmentValueChanged(AdjustmentEvent e)
        {
           if(e.getValueIsAdjusting())
           {
               System.out.println("AdjustmentEvent");
           }

           if(scroll.getValueIsAdjusting())
           {
              System.out.println("JScrollBar");
           }

        }
    };

    private static void createAndShowGUI()
    {
        JFrame frame;
        frame = new JFrame("Scroll Test");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(880, 100);
        frame.add(new ScrollTest(), BorderLayout.CENTER);
        frame.setVisible(true);
    }

    public static void main(String[] args)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                UIManager.put("swing.boldMetal", Boolean.FALSE);
                createAndShowGUI();
            }
        });
    }
}

上記のコードは、「AdjustmentEvent」と「JScrollBar」の文字列を順番に出力します。それらの間に違いはないようです!

重要なポイントは、それぞれをいつ、何のために使用するかです。


2番目の質問:

JScrollBarボタンを聞くには? 上記のコードをテストすると、ノブを動かしたり、ストリップをクリックしたときに文字列が出力されますが、JScrollBar のボタンをクリックしたときには出力されません!

4

1 に答える 1

5

ofクラスにもう1つのイベントを追加します(ここで説明されているように) 。adjustmentValueChangedAdjustmentListener

イベント タイプの場合はAdjustmentEvent.TRACK、ステートメントも出力します。

 if(e.getValueIsAdjusting())
 {
   System.out.println("AdjustmentEvent");
 }

 if(scroll.getValueIsAdjusting())
 {
   System.out.println("JScrollBar");
 }

 if(e.getAdjustmentType() == AdjustmentEvent.TRACK) 
 { 
   System.out.println("The button in scrollbar clicked");
 }

これにより、 のボタン クリック アクションがキャプチャされますJScrollBar

于 2013-01-26T17:53:01.570 に答える