我已经有一个基于 JList 的自定义控件,如下所示
public class MyClass extends JList<String> {
private DefaultListModel<String> items = new DefaultListModel<String>();
public MyClass() {
setModel(items);
}
public String getAAAA() { //code here.. }
public int getBBB() { //code here... }
}
但我希望 Jlist 有滚动条,因此我将自定义控件的父类(super class)更改为 JScrollPane 并将 JList 添加到其中。 像这样的代码
public class MyClass extends JScrollPanel {
private JList<String> list = new JList<String>();
private DefaultListModel<String> items = new DefaultListModel<String>();
public MyClass() {
list.setModel(items);
this.setViewportView(list);
}
public String getAAAA() { //code here.. }
public int getBBB() { //code here... }
}
好吧,如果 MyClass 扩展了 JList,在 JFrame 中我可以将MouseListener 添加到 MyClass 对象,在 mouseClicked 中我比较 MouseEvent getSource 是 MyClass 的实例并调用 MyClass 的这些方法。
@Override
public void mouseClicked(MouseEvent arg0)
{
Object source = arg0.getSource();
if (source instanceof MyClass)
{
String a = ((MyClass) source).getAAAA();
int b = ((MyClass) source).getBBB();
}
}
但是如果 MyClass 扩展了 JScrollPane,我将 MouseListener 添加到 MyClass 对象,并且像上面一样,在 mouseClicked 中我比较 MyClass 的 MouseEvent getSource 实例并调用这些方法(getAAA()、getBBB()...),但它不起作用?
最佳答案
您可能不想扩展 JScrollPane。 您可以将任何组件添加到 JScrollPane 以实现滚动条。 JList是一个组件,所以可以直接添加。您不需要做太多事情。
参见: http://docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html
关于java - Java JScrollPane 的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29262995/