Sal*_*eek 3 java swing listener jscrollbar
它们实际上是两个问题:
在第一个问题:是什么区别getValueIsAdjusting()两种JScrollBar中和的AdjustmentEvent
我尝试用一些代码测试是否有任何差异,但我没有得到任何!这是显示我如何测试它们的代码.
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();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将按顺序打印"AdjustmentEvent"和"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");
}
Run Code Online (Sandbox Code Playgroud)
这将捕获按钮上的按钮单击操作JScrollBar.