jCombobox中setEditable()和setEnabled()有什么区别?组合框可以编辑但不启用和其他方式?在哪种情况下你会使用哪种方法?
你能想象一下你可以和setEditable(true)一起做setEnabled(false)的情况吗?
我正在使用Java中非常简单的GUI.
在这个GUI中我想显示:
这是我的代码:
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Prova {
public static void main(String[] args) {
JFrame frame = new JFrame("A Simple GUI");
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setLocation(430, 100);
JPanel panel = new JPanel();
frame.add(panel);
JLabel lbl = new JLabel("Select one of the possible choices and click OK");
lbl.setVisible(true);
panel.add(lbl);
String[] choices = { "CHOICE 1","CHOICE 2", "CHOICE 3","CHOICE 4","CHOICE 5","CHOICE 6"};
final JComboBox<String> cb = new JComboBox<String>(choices);
cb.setVisible(true);
panel.add(cb); …Run Code Online (Sandbox Code Playgroud) 我遇到以下代码的问题,我使用JComboBox更改表格单元格中的字符串值.JComboBox工作正常,但是如果我在框中单击然后单击而不选择任何内容,即使我删除了行,JComboBox的下拉列表仍然可见.单击另一个像JButton这样的Swing组件通常会导致它消失,但并非总是如此.
TableColumn col = myTable.getColumnModel().getColumn(0);
JComboBox eq = new JComboBox();
eq.addItem("==");
eq.addItem("!=");
DefaultCellEditor editor = new DefaultCellEditor(eq);
col.setCellEditor(editor);Run Code Online (Sandbox Code Playgroud)
编辑:我之前忽略了提到:
myTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
Run Code Online (Sandbox Code Playgroud)
如果我对此行进行注释或将其设置为false,则单击其他Swing组件不会导致该框消失.有了它,点击任何需要聚焦的东西会使盒子消失,使问题不那么烦人,但可能掩盖了行为的原因.
我在这里做错了什么,还是忘记了一步?或者,有没有办法迫使它自己关闭?
谢谢!
我有一个数据库模式=将作为JTable列显示在JCombobox中以选择名称.但我希望ID字段在另一个表中插入(作为外键).
通常,在下拉列表中选择一个项目,将所选项目带到组合框的显示区域.
我想要做的是,当在组合框中选择任何项目(字符串)时,其对应的整数键(可以保存在有序映射中)应该显示在组合框占位符区域中,以便在获取JTable的值时. getValueAt(row,column),我得到整数键,而不是字符串项值.请帮帮我怎么办?
我有一个jcombobox,其值来自列表.我想从下拉列表中首先看到空白.我接近它的方法是首先将列表类型的新对象放在第一位,如示例所示:
final List<Object> list = getObjectsList();
list.add(new Object());
Run Code Online (Sandbox Code Playgroud)
但这会导致空指针,如果这样做
list.add(null);
Run Code Online (Sandbox Code Playgroud)
这解决了这个问题,但后来又用Comparator方法给了我另一个问题.所以任何一轮工作都会非常感谢.
我有一个JComboBox,每秒一次,我想从数据库中检索一组字符串,并将这些字符串设置为JComboBox的内容,其中一个作为当前选择的值.但我也希望用户能够编辑JComboBox并向数据库添加值并将其设置为当前值.
我希望能够检测到何时将字符输入JComboBox,因此我可以重置倒计时,这会阻止更新JComboBox,只要它不为零.我的第一直觉是使用KeyListener,但组合框上的Java教程说明了这一点,
虽然JComboBox继承了为低级事件(例如焦点,键和鼠标事件)注册侦听器的方法,但我们建议您不要在组合框上侦听低级事件.
他们接着说,所发射的事件可能会根据外观和感觉而改变.
目前我有这个JComboBox,我怎样才能将内容集中在里面?
String[] strs = new String[]{"15158133110", "15158133124", "15158133458"};
JComboBox com = new JComboBox(strs);
Run Code Online (Sandbox Code Playgroud) 在Java Swing中,a JList和a JComboBox在数据方面同步的最佳方式是什么,即在任何给定的时间点拥有相同的项目列表?基本上,如果我向其中添加项目(或从中删除项目),则另一项应自动反映更改.
我尝试过以下操作,但它似乎不起作用:
JList list = new JList();
JComboBox comboBox = new JComboBox();
DefaultListModel listModel = new DefaultListModel();
// add items to listModel...
list.setModel(listModel);
comboBox.setModel(new DefaultComboBoxModel(listModel.toArray()));
Run Code Online (Sandbox Code Playgroud) 我想要一个右对齐的JComboBox.我怎样才能做到这一点?有人说"你可以设置一个渲染器到JComboBox,它可以是一个JLabel有JLabel #setHorizontalAlignment(JLabel.RIGHT)",但我不知道怎么办呢?