首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getValueIsAdjusting()在JScrollBar和AdjustmentEvent中有什么区别?+如何收听JScrollBar的按钮?

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

Stack Overflow用户
提问于 2013-01-26 17:32:17
回答 1查看 584关注 0票数 3

它们实际上是两个问题:

First问题:getValueIsAdjusting()JScrollBarAdjustmentEvent中的区别是什么?

我用一些代码来测试它们是否有任何区别,但我没有得到任何差别!下面的代码展示了我是如何测试它们的。

代码语言:javascript
复制
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的按钮时。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-26 17:53:01

adjustmentValueChanged of AdjustmentListener类中再添加一个事件(如声明的AdjustmentListener)。

如果事件类型为AdjustmentEvent.TRACK,则还打印一条语句。

代码语言:javascript
复制
 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上的按钮单击操作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14539583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档