JScrollBar 和 AdjustEvent 中的 getValueIsAdjusting() 有什么区别?+如何收



它们实际上是两个问题:

第一个问题:JScrollBar 和 AdjustEvent 中的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();
            }
        });
    }
}

上面的代码将依次打印"AdjustEvent"和"JScrollBar"字符串。 看来他们之间没有区别!

重要的一点是何时/为了使用每个?


第二个问题:

如何收听 JScrollBar 按钮? 如果您测试了上面的代码,它会在您移动旋钮或单击条带时打印字符串,但当您单击 JScrollBar 的按钮时不会打印字符串!

在类adjustmentValueChanged中添加一个事件(如此处所述AdjustmentListener)。

如果事件类型为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上的按钮单击操作。

相关内容

  • 没有找到相关文章