gpt4 book ai didi

Java Swing - 获取鼠标悬停的对象

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:27:00 24 4
gpt4 key购买 nike

我有一个 JList 并想根据鼠标悬停在其上的条目更改工具提示。我尝试在谷歌上搜索我的问题,但没有成功。

基本上我需要获取我当前悬停的对象。

感谢您的帮助

最佳答案

为此,您必须扩展 JList 并公开工具提示文本方法。这是我前段时间使用 Google 找到的示例程序:

import java.awt.EventQueue;
import java.awt.event.*;
import javax.swing.*;

// Custom class to extend our JList and expose tooltip functionality.
class MyList extends JList {

public MyList() {
super();

// Attach a mouse motion adapter to let us know the mouse is over an item and to show the tip.
addMouseMotionListener(new MouseMotionAdapter() {

@Override
public void mouseMoved(MouseEvent e) {
MyList theList = (MyList) e.getSource();
ListModel model = theList.getModel();
int index = theList.locationToIndex(e.getPoint());
if (index > -1) {
theList.setToolTipText(null);
String text = (String) model.getElementAt(index);
theList.setToolTipText(text);
}
}
});
}

// Expose the getToolTipText event of our JList
public String getToolTipText(MouseEvent e) {
return super.getToolTipText();
}
}

public class TestJList extends JFrame {

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
TestJList myTest = new TestJList();
myTest.setTitle("Example JList");
myTest.setSize(300, 300);
myTest.setDefaultCloseOperation(EXIT_ON_CLOSE);

MyList list = new MyList();

// Create our model and add some items.
DefaultListModel model = new DefaultListModel();

model.addElement("one");
model.addElement("two");
model.addElement("three");
model.addElement("four");

// Set the model for our list
list.setModel(model);

ToolTipManager.sharedInstance().registerComponent(list);

// Add our custom list and show the form.
MyTest.add(list);
MyTest.setVisible(true);
}
});
}
}

希望这对您有所帮助。

关于Java Swing - 获取鼠标悬停的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21800442/

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