Tag: jcombobox

JCombobox,编辑和Renderer相关

作为一个JCombobox ListCellRenderer,我有一个像这样的类: class ZComboBoxRenderer extends JPanel implements ListCellRenderer{ private ZGrid grid; public ZComboBoxRenderer(ZGrid grid) { setLayout(new BorderLayout()); this.grid = grid; add(new JScrollPane(grid), BorderLayout.CENTER); } public ZGrid getGrid(){ return grid; } @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { grid.fetchSQL(); return this; } } 这里的ZGrid扩展了JTable 。 作为ListCellRendererComponent ,我向ZGrid提供了一个内部有ZGrid的JPanel。 问题是,在它的列表中,这个ZGrid正在绘画。 但它也在JCombobox的编辑内部绘制。 […]

调用getListCellRendererComponent多少次?

我试图理解getListCellRendererComponent方法是如何工作的,但我不明白。 我创建了一个扩展BasicComboBoxRenderer的独立类,我添加了一个计数器,每次调用getListCellRendererComponent时都会打印一个。 然后我运行一个带有main方法的测试类,该方法显示一个框架,其中只有一个使用我的自定义渲染器类的JComboBox。 这个combobox共有3个项目,我设置了setMaximumRowCount(2),因此它只显示其中的2个。 当我第一次运行程序并出现带有combobox的帧时,计数器会通知getListCellRendererComponent被调用6次。 当框架失去焦点时(例如,当我点击我的桌面时),该方法执行1次。 当帧重新获得焦点时(单击我的帧),该方法执行1次。 当我单击箭头按钮并且第一次出现下拉列表时,计数器表示该方法执行了8次。 当我再次单击箭头按钮并且列表消失时,该方法被调用一次(这总是发生)。 当我第一次点击箭头按钮后,该方法被调用5次。 当我单击滚动条按钮上下移动时,该方法执行1次。 当我将光标移动到列表中未选择的项目上时,该方法执行2次,然后再执行1次(这是最荒谬的) 当我单击列表中的项目时,该方法执行4次。 起初我认为这个方法将被执行的次数与列表中的项目数量相同(再加上combobox显示区域中显示的一个项目)。 但是我只能理解上面的一两种情况,例如当我单击滚动条按钮并且该方法执行一次时,可能是因为渲染了一个新项目。 其余的人似乎疯了……

表单中的Java JComboBox在单击单元格之前未显示

好的,所以我有一个表设置,我已经在这里的示例中添加了一个JComboBox到特定的单元格,但由于某种原因,combobox将不会显示,直到选中该单元格。 如果我选择该单元格,combobox将打开它的列表供我选择。 无论我是否更改选择,如果单击表格中的另一个单元格,它将显示从combobox中选择的项目的文本,就好像它是根据需要显示在表格中的简单字符串一样。 我的问题是:如何让它在JComboBox中显示所选值而无需先选择单元格? 编辑:我忘了提到的一件事是; 而不是像之前那样手工声明DefaultTableModel data ,而是稍后使用model.addRow();将项目添加到DTM中model.addRow();

如何创建一个comboboxactionListener?

如何创建combobox动作侦听器? 到目前为止我有以下内容: myCombo = new JComboBox(); myCombo.addActionListener(); 我不知道如何继续,似乎它与用于按钮的那个不同。

在JComboBox中列出数组

我已经创建了一个JComboBox,但我想用List Array中的数据更新信息。 我目前有代码: java.util.List listNames = empPort.getEmployeeInfo(“username”); int itemSize = listNames.size(); empPort定向到Web服务操作,该操作在List Array中返回一组值。 使用时; for(String s : listNames) { combo.add(s, combo); } 这段代码不起作用。 任何人都能指出我在正确的方向吗? 谢谢。

过滤JComboBox

一开始我会说我没有考虑自动完成combobox,而是在我的combobox中有一个“setFilter(Set)”方法,所以它显示了集合中的内容。 我无法实现这种效果,尝试不同的方法,我认为过滤它显示的内容是视图的责任,所以我不应该扩展ComboBoxModel。 这是我到目前为止(主要包括不起作用的情况): import java.awt.*; import java.util.Set; import javax.swing.*; public class FilteredComboBox extends JComboBox { private ComboBoxModel entireModel; private final DefaultComboBoxModel filteredModel = new DefaultComboBoxModel(); private Set objectsToShow; public FilteredComboBox(ComboBoxModel model) { super(model); this.entireModel = model; } public void setFilter(Set objectsToShow) { if (objectsToShow != null) { this.objectsToShow = objectsToShow; filterModel(); } else { removeFilter(); […]

jComoBox只输入字符(无数字)

我正在尝试制作一个允许除数字之外的所有输入的jComoBox。 但是,当我尝试使用jComoBox时,它无法正常工作。 我用jTextFiled成功完成了它(但是对象 – 没有数字): i_borow jTextFiled的TimeKeyTyped事件代码: private void i_borowTimeKeyTyped(java.awt.event.KeyEvent evt) { char c = evt.getKeyChar(); if(!( Character.isDigit(c) || c == KeyEvent.VK_BACK_SPACE || c == KeyEvent.VK_DELETE)) { evt.consume(); l_msg2.setForeground(Color.red); } else { l_msg2.setForeground(Color.black); } } 我试着对jComoBox(c_title)做同样的事情: private void c_titleKeyTyped(java.awt.event.KeyEvent evt) { System.out.println(“ssss”); char c = evt.getKeyChar(); System.out.println(c); if(Character.isDigit(c)){ evt.consume(); l_noNum.setForeground(Color.red); } else { l_noNum.setForeground(Color.black); } […]

如何为每个JTree节点添加不同的JComboBox?

我有一个JTree,我正在填写我正在编写的游戏数据库程序的技能。 有几个类别和子类别(实际技能),然后是水平技能(有时)。 目前我正在使用一个技能类,内部的一些选项和一些枚举来模拟这个,还有一个方法来检查技能是否属于一个类别(称为isCategory)。 还有两点需要注意: 不同类型的技能表现不同。 有些是一次购买,有几次购买,有些可以选择等 不同类别包含不同的技能。 例如,武器技能类别有不同类型的武器,但装甲技能在不同的部分。 我已经看到了通过单元格渲染器将ComboBox附加到树中每个节点的非常好的示例。 这是我找到的例子 。 我理解上面的代码,但我看不出如何将combobox附加到节点,而不是树? 我已经阅读了“ 如何使用树木 ”,并且我已经运行了,并查看了一些树的演示代码。 我可以制作基本的树,但是我发现教程有点迟钝,缺乏足够的细节来弄清楚自己如何继续。 我发现了另一个仅将叶节点渲染为复选框的示例 ,这要复杂得多。 显然我想把两者结合起来,能够拥有不同的类别,能够拥有不同的技能,不同的技能有不同的熟练程度。 然而,我能想到这样做的唯一方法是为不同的类型设置不同的JComboBoxModel但我不知道如何做到这一点,我无法找到方法。 我试图编辑复选框示例以使用ComboBoxes,但对于我的生活我无法理解。 有人可以给我一个提示,告诉我采取什么方法,因为我是Java的新手并且在努力弄清楚要做什么?

Java – 如何使非String对象的JComboBox显示字符串名称?

我想让JComboBox组件显示String名称,而不是引用。 但是,我不知道是怎么做到的。 下面显示了我的代码: public class Properties extends JPanel implements ItemListener { private static final long serialVersionUID = -8555733808183623384L; private static final Dimension SIZE = new Dimension(130, 80); private JComboBox tileCategory; public Properties() { tileCategory = new JComboBox(); tileCategory.setPreferredSize(SIZE); tileCategory.addItemListener(this); this.setLayout(new GridLayout(16, 1)); loadCategory(); } private void loadCategory() { //Obtains a HashMap of Strings from somewhere […]

combobox选择不会在新窗口中加载/初始化类

在底部看到更新!! 我试图弄清楚如何做这几天,但到目前为止我没有运气。 基本上我想要做的是有一个combobox,当选择一个选项时, 加载一个小程序,并将值传递给小程序。 这是ComboBox类的代码,它应该在新窗口中打开另一个类。 另一个类是applet的主类。 它们都在同一个项目中但在不同的包中。 我知道其余代码没有任何错误。 //where I evaluate the selection and then open SteadyStateFusionDemo // more selections just showing one code block combo.addItemListener(new ItemListener(){ public void itemStateChanged(ItemEvent ie){ String str = (String)combo.getSelectedItem(); if (str.equals(“NSTX”)) { machine = “A”; JFrame frame = new JFrame (“MyPanel2”); frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); SteadyStateFusionDemo d = new SteadyStateFusionDemo(); frame.getContentPane().add […]