【问题标题】:Event handler of Java JScrollPaneJava JScrollPane 的事件处理程序
【发布时间】: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()...)但它不起作用?

【问题讨论】:

    标签: java swing


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-25
      • 2013-05-30
      • 2015-06-29
      • 2013-12-24
      相关资源
      最近更新 更多