如何解决有关滚动条的AdjustmentListener行为的问题
我用Scrollbar示例修改了一个现有的JTable,并为此示例添加了一个Adjustment Listener和JMenu项。
执行示例并调整Frame的大小影响滚动条时,或者如果滚动条被移动,则按预期方式执行侦听器。访问工具栏上的菜单将触发调整侦听器。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.AdjustmentEvent;
import java.awt.event.AdjustmentListener;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class AdjustmentListener_Example3
{
static int x = 0;
public static void main(String[] argv)
{
JFrame frame = new JFrame();
JTable table = new JTable(data,col);
JScrollPane scrollPane = new JScrollPane(table);
scrollPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener()
{
@Override
public void adjustmentValueChanged(AdjustmentEvent event)
{
x++;
System.out.println(x + " : " + event.getValue());
String type = null;
switch (event.getAdjustmentType())
{
case AdjustmentEvent.TRACK:
type = "Track";
break;
case AdjustmentEvent.BLOCK_DECREMENT:
type = "Block Decrement";
break;
case AdjustmentEvent.BLOCK_INCREMENT:
type = "Block Increment";
break;
case AdjustmentEvent.UNIT_DECREMENT:
type = "Unit Decrement";
break;
case AdjustmentEvent.UNIT_INCREMENT:
type = "Unit Increment";
break;
}
System.out.println(" Type: " + type);
}
});
frame.add(scrollPane);
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
JMenuItem menuItem1 = new JMenuItem("Send Action To Scrollbar");
menuItem1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
AdjustmentListener[] adjustmentListeners = scrollPane.getVerticalScrollBar().getAdjustmentListeners();
adjustmentListeners[0].adjustmentValueChanged(new AdjustmentEvent(scrollPane.getVerticalScrollBar(),0));
}
});
menu.add(menuItem1);
menuBar.add(menu);
frame.setJMenuBar(menuBar);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setBounds(20,20,500,500);
frame.setVisible(true);
}
static String [][] data = {{"001","vinod","Bihar","India","Biology","65","First"},{"002","Raju","ABC","Kanada","Geography","58","second"},{"003","Aman","Delhi","computer","98","Dictontion"},{"004","Ranjan","Bangloor","chemestry","90",{"005",{"006",{"007",{"008",{"009",{"010",{"011",{"012",{"013",{"014",{"015",{"016",{"017",{"018",{"019",{"020",{"021",{"022",{"023",{"024",{"025",{"026",{"027",{"028",{"029",{"030",{"031",{"032","Dictontion"}};
static String col[] = {"Roll","Name","State","country","Math","Marks","Grade"};
}
问题:
使用JButton,如果未创建任何侦听器,则什么也不会发生,但是即使在此示例中从未添加AdjustmentListener,滚动条也将起作用。这表明滚动条已经具有默认的侦听器来处理该功能。
调整侦听器是一种向滚动条添加其他侦听器,而不是覆盖现有侦听器的方法吗?
在移动滚动条时,Adjustment侦听器主要是执行其他非滚动条行为吗?
为什么在自定义侦听器中不需要@override注释以及对super的调用?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。