我创建了一个简单的GUI,一个JComboBox和JButton。JButton用testString类的对象填充JComboBox。当鼠标悬停在JComboBox上时,它几乎触发了testString类的toString()25次。为什么会这样?我们怎样才能阻止它?
以下是代码:
import javax.swing.DefaultComboBoxModel;
public class _NewJFrame extends javax.swing.JFrame {
public _NewJFrame() {
initComponents();
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Object[] args = {new testString("ABC") , new testString("EDF") , "GIH", "IJK"};
jComboBox1.setModel(new DefaultComboBoxModel(args ));
}
public static void main(String args[]) {
new _NewJFrame().setVisible(true);
}
private javax.swing.JButton jButton1;
private javax.swing.JComboBox<String> jComboBox1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
}
class testString {
String text;
static int i;
testString(String text){ this.text = text; };
public String toString(){
System.out.println("ToSting() Called on Text " + text + " "+ ++i);
return text;
}
}
图形用户界面输出
您无法阻止JComboBox
调用项目的toString()
方法。
这是因为JComboBox
需要知道它必须向用户显示什么文本。
为此,它调用项的toString()
方法(鼠标悬停在当前显示的项,下拉列表中显示的所有项)。
好的,您可以通过提供一个定制的呈现器来停止它——一个实现javax的类。摆动ListCellRenderer
接口。
在项目上有效调用toString()
方法的默认ListCellRenader
。如果您提供自定义的ListCellRenader实现,它可以调用您喜欢的任何其他方法。
但是,对ListCellRenderer的调用应该尽可能多。GetListCellRenderComponent()
方法,正如您看到的对项的调用toString()
方法一样。
问题内容: libgdx中是否有任何侦听器可以让我检测到鼠标悬停而不是鼠标悬停。在场景2D的按钮类中,您有2种方法isOver和isPressed,但是它们执行相同的操作…还有其他问题吗?还有另一种方法来检测鼠标悬停在actor上吗? 问题答案: 还有的可以连接到和它提供的事件,如下面的: 该事件从根本上来说意味着鼠标开始悬停在角色上,意味着它“离开”了角色的区域。它还有一个事件,您可以使用该事件
问题内容: 有时,我可以选择使用CSS元素:悬停或JavaScript onmouseover来控制页面上html元素的外观。考虑以下情况,其中div包装了输入 我希望输入将鼠标光标悬停在div上时更改背景色。CSS方法是 JavaScript方法是 每种方法的优点和缺点是什么?CSS方法是否适用于大多数Web浏览器?JavaScript比CSS慢吗? 问题答案: :hover的问题是IE6仅在链
问题内容: 我的代码中有一个。我已添加。但是它还是没有被触发。我已经尝试了很多时间,但是没有找到解决方案。 但是控制台中没有任何内容。请建议我我在做什么错。 问题答案: FocusListener不是JComboBox的适当监听器,另外一个监听器可以创建无限循环(尤其是可编辑的JComboBox), 的FocusListener是异步的,有时是太难捕捉事件是正确的订单特别是在案件JComponen
问题内容: 全屏是提供全屏框架的另一类。JButton上面有ImageIcon。bg1.png是背景图像 问题 是这些JButton仅在鼠标悬停时才可见,否则它们不出现。 问题答案: 您可能会遇到布局问题,在该问题中,您尝试将具有绝对界限的JButton添加到使用非null布局管理器的容器中。意见建议 不要使用setBounds和绝对定位来调整和放置组件。 阅读并使用布局管理器为您完成繁重的工作:
我有一个应用程序,我想在
我有一系列使用d3创建的行。我写了一些和事件事件。 当I时,事件通过增加行的值正常工作。 但是在上,在我编写代码的地方,事件不能正常工作,将值设置为初始值。 小提琴 帮我修一下。