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+