Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有什么区别:JScrollBar和AdjustmentEvent中的getValueIsAdjusting()+;如何收听JScrollBar的按钮?_Java_Swing_Listener_Jscrollbar - Fatal编程技术网

Java 有什么区别:JScrollBar和AdjustmentEvent中的getValueIsAdjusting()+;如何收听JScrollBar的按钮?

Java 有什么区别:JScrollBar和AdjustmentEvent中的getValueIsAdjusting()+;如何收听JScrollBar的按钮?,java,swing,listener,jscrollbar,Java,Swing,Listener,Jscrollbar,这实际上是两个问题: 第一个问题: 在和中的getValueIsAdjusting()之间有什么区别 我用一些代码来测试它们是否有任何差异,但没有得到任何结果!。下面是我如何测试它们的代码 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ScrollTest extends JPanel { JPanel panel; JScrollBar scroll; p

这实际上是两个问题:

第一个问题: 在和中的
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”字符串。看来他们之间没有什么区别

重要的一点是什么时候/用什么?


第二个问题:

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

AdjustmentListener
类的
adjustmentValueChanged
中再添加一个事件(如上所述)

如果事件类型为
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

上的按钮单击操作!这应该是公认的答案。删除我的答案,赞成这一点。1+