你知道从Java中的JComboBox中删除边框的方法吗?我尝试以下代码
public class ComboFrame extends JFrame {
public ComboFrame() {
JPanel container = new JPanel();
JComboBox cmb = new JComboBox(new String[] { "one", "two" });
cmb.setBorder(BorderFactory.createEmptyBorder());
container.add(cmb);
getContentPane().add(container);
pack();
}
}
Run Code Online (Sandbox Code Playgroud)
和
public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
EventQueue.invokeLater(new Runnable() {
public void run() {
new ComboFrame().setVisible(true);
}
});
}
Run Code Online (Sandbox Code Playgroud)
不要问为什么有人想从组合框中移除边框......我想它没有多大意义,但这就是它的需要,我真的很好奇它是否可以完成.我尝试了几个技巧,但都没有奏效.
最有效的是改变UI
cmb.setUI(new BasicComboBoxUI());
Run Code Online (Sandbox Code Playgroud)
这使得边界消失,但改变了L&F,如果可能的话我需要保留Windows L&F.
谢谢.
有人知道如何手动更改jComboBox中的滚动条大小吗?我尝试了很多东西,没有任何作用.
快速的背景,我正在使用Netbeans开发这个(我没有太多的Swing经验,并且在获得开发速度的机会上失去了经验值).在Netbeans中,显然限制了你可以修改哪些代码来阻止新手用户破解代码(我已经有趣地做过一次)无论如何,我有一类对象,这些对象有一个名称属性.在应用程序中,我直接初始化了这些对象的数组,并称之为"东西";
Objects[] things = new Objects[2];
things[0] = new Objects("The first thing");
things[1] = new Objects("The second thing");
Run Code Online (Sandbox Code Playgroud)
内容和名称是故意愚蠢的,因为这是一个测试,以使这工作(而不是分开一部分书面程序).经过一些研究和阅读后,我发现我"应该"能够使用以下代码将对象加载到setModel参数中;
new javax.swing.DefaultComboBoxModel(things[].name)
//The above is the code to use within setModel, the below is the completed example
jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(things[].name));
Run Code Online (Sandbox Code Playgroud)
这没有用,尽管我最努力去谷歌这似乎太具体了,无法确定一个体面的答案.最终的结果是我想拥有; 下拉列表中显示"第一件事"和"第二件事",然后显然我可以在真实程序中通过引用屏幕上该对象中保存的任何其他数据来扩展它.
任何建议甚至指针,以帮助我认为这一点将不胜感激.
我在不同的地方使用JList和JComboBox.两者的内容动态变化.
一旦创建了一个comboBox,你就不能说comboBox.setModel(String []),你必须创建一个新模型然后将它设置为comboBox.
JList也是如此.
我只是为了添加一个名为.setNewModel(String [])的新方法而不是创建我自己的Jlist和ComboBox,而是在我的"实用程序"类中创建了一个静态方法,它接收一个String []并返回一个ListModel.
所以我可以这样做:
someComboBox.setModel((ComboBoxModel)UtilityClass.convetToListModel(aStringArray));
Run Code Online (Sandbox Code Playgroud)
我对JList使用相同的.
someList.setModel(UtilityClass.convetToListModel(anotherStringArray));
Run Code Online (Sandbox Code Playgroud)
我的问题是:
将listModel转换为ComboBoxModel会产生一些意想不到的后果吗?如果是这样,无论如何都要改变组合框的整个内容而不必将ArrayString转换为模型?
这是方法的代码:
public static ListModel convertToListModel(String[] nList)
{
return (new JComboBox(nList).getModel());
}
Run Code Online (Sandbox Code Playgroud)
该程序编译并运行良好,但铸造总是在我,特别是复杂的对象产生怀疑.是的,我知道我可以扩展JComboBox和JList来添加一个方法来完成这项工作,但它还有很多额外的工作.为什么ComboBox和Jlist没有更新或修改模型而不接受简单的字符串数组?
我有一个非常类似的问题,就像这个Java ComboBox不同的名称值
我已经更改了代码,所以我会得到一个Employee-Object(我改变了我的类名,因为上面链接中的类名是Employee).
就我而言,我已经有了一个toString()方法,我不想覆盖它.(我需要它在其他地方)
但我不想toString()在我的方法中使用这种方法JCombobox.但它确实是自动的.
我不想回复任何字符串!我需要这些物品.
在创建JCombobox时toString(),有没有办法说"采取另一种方法,让我们说toStringDifferent()"?
this.comboEmployees = new JComboBox(new EmployeeComboboxModel(getEmployees()));
// this will give me the toString-method's return-value of the Employee object.
// But i want the toStringDifferent() method's result.
Run Code Online (Sandbox Code Playgroud)
谢谢!
如何将jComboBox元素列表排序为排序列表.
JComboBox box=new JComboBox();
box.addItem("abc");
box.addItem("zzz");
box.addItem("ccc");
add(box);
Run Code Online (Sandbox Code Playgroud)
我使用了很多jComboBox组件,但它不起作用.如何将此列表按升序排序?
我有一个JComboBox用作编辑器的人JTable.在图片中,您可以在标有列的列中看到它们Produs.我想JComboBox在网格单元格中使用独立设计,特别是组合框的右侧部分,网格单元格中缺少三角形,因此用户将知道网格单元格是组合框而不必点击其中一个.如何将JComboBox(IsBackFlush)的设计应用于JComboBoxes网格中?
从本质上讲,我如何comboBox2根据设计进行设计comboBox1?谢谢.

我有一个有三个人的人[](p1,p2,p3).Person类有两个属性name和email.
我想在一个JComboBox中添加Person []的所有名称,在另一个JComboBox中添加所有电子邮件.
我使用了以下代码.
Person p1 = new Person("Smith", "smith@mail.com");
Person p2 = new Person("Tom", "tom@gmail.com");
Person p3 = new Person("John","john@mail.com");
Person[] per_arr = new Person[] { p1, p2, p3};
JFrame frame = new JFrame();
JPanel panel = new JPanel();
JComboBox<String> combo1 = new JComboBox<String>();
JComboBox<String> combo2 = new JComboBox<String>();
for (Person p : per_arr) {
combo1.addItem(p.getName());
combo2.addItem(p.getEmail());
}
panel.add(combo1);
panel.add(combo2);
frame.setContentPane(panel);
frame.pack();
frame.setVisible(true);
Run Code Online (Sandbox Code Playgroud)
但我不想这样使用.我想使用具有相同型号的两个组合框.我尝试使用DefaultComboBoxModel和Override getElementAt()方法,如下所示.
public class MyModel extends DefaultComboBoxModel<Object> …Run Code Online (Sandbox Code Playgroud)