【发布时间】:2015-03-25 17:53:19
【问题描述】:
我已经有一个像这样的基于 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 有滚动条,所以我将自定义控件的超类更改为 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 中我比较 MouseEvent getSource instanceof MyClass 并调用这些方法(getAAA()、getBBB()...)但它不起作用?
【问题讨论】: