它们实际上是两个问题:
第一个问题: JScrollBar和AdjustmentEventgetValueIsAdjusting()
有什么区别
我用一些代码尝试了它们以测试是否有任何区别,但我没有得到任何!这是显示我如何测试它们的代码。
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 的按钮时不会打印!