gpt4 book ai didi

java - Java JScrollPane 的事件处理程序

转载 作者:行者123 更新时间:2023-12-02 04:50:42 27 4
gpt4 key购买 nike

我已经有一个基于 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com