我正在使用带有ItemListener的JComboBox.更改值时,将调用itemStateChanged事件两次.第一个调用,ItemEvent显示所选的原始项目.第二次,它显示用户刚刚选择的项目.这是一些测试人员代码:
public Tester(){
JComboBox box = new JComboBox();
box.addItem("One");
box.addItem("Two");
box.addItem("Three");
box.addItem("Four");
box.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
System.out.println(e.getItem());
}
});
JFrame frame = new JFrame();
frame.getContentPane().add(box);
frame.pack();
frame.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
因此,当我将组合框从"一"改为"三"时,控制台显示:
One
Three
Run Code Online (Sandbox Code Playgroud)
有没有一种方法我可以使用ItemEvent告诉它,它是第二项(即用户选择的项目)?如果有人可以解释为什么它被调用两次,那也会很好!
谢谢
当按下键盘按钮(即CTRL按钮)并选择一行时,是否有一种简单的方法来操纵JTable上的控件以提供不同的功能?我被要求创建一个表,其中行上的CTRL +单击(鼠标单击)将仅取消选择所选行,从不选择行.如果用户按CTRL +单击未选择的行,则不会发生任何事情.
我已经能够创建一个表,并禁用CTRL + A(全选)等功能,并且我已经能够检查生成MouseEvent时是否按下了控制按钮,但我似乎无法想象如何调整CTRL + Click.这是一些代码:
package nicky;
import javax.swing.*;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.*;
public class TableTester extends JPanel {
public TableTester() {
super(new GridLayout(1,0));
final String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
final Object[][] data = {
{"Tom", "Roberts","Athletic", new Integer(5), new Boolean(false)},
{"Sarah", "Watt", "Football", new Integer(3), new Boolean(true)},
{"Laura", "Brown", "Swimming", new Integer(2), new Boolean(false)},
{"Simon", "Smith", "Tennis", new Integer(20), new Boolean(true)},
{"Paul", "Jones", "Rugby", new Integer(10), new …Run Code Online (Sandbox Code Playgroud) 我有一个问题:
select *
from randomtable
where randomnumber <> 0
"random_number"列永远不会是负数.
所以,如果我将查询写为:
select *
from randomtable
where randomnumber > 0
有什么重大区别吗?