繁体   English   中英

Java JScrollPane的事件处理程序

[英]Event handler of Java JScrollPane

我已经有一个像这样的基于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中,我比较MyClass的MouseEvent getSource实例并调用这些方法(getAAA(),getBBB()...),但是它不起作用?

您可能不想扩展JScrollPane。 您可以将任何Component添加到JScrollPane以实现具有滚动条。 JList是一个组件,因此您可以直接添加它。 您不需要做太多事情。

参见: http : //docs.oracle.com/javase/tutorial/uiswing/components/scrollpane.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM