这可能是一个骗局——我找不到它——我基本上只是试图通过提供我自己的ListCellRenler来自定义JComboBox显示:
targetCombo = new JComboBox();
targetCombo .setRenderer(new BasicComboBoxRenderer(){
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value != null){
MyObj myObj = (myObj)value;
setText(myObj.getName());
}
return this;
}
});
当我展开JComboBox列表时,组件会正确显示名称。但是,在选择项目时,显示将恢复为myObj的toString()值。
我错过什么了吗?
…显示恢复为myObj的toString()值。
除非您需要对特定内容进行toString(),否则请覆盖它以返回“name”,
那么就不需要渲染器了comboBox会显示toString()值
将< code > basiccomboxrenderer 替换为< code > DefaultListCellRenderer
public class TestComboBox04 {
public static void main(String[] args) {
new TestComboBox04();
}
public TestComboBox04() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
}
JComboBox targetCombo = new JComboBox();
targetCombo.setRenderer(new DefaultListCellRenderer() {
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
if (value != null) {
MyObj myObj = (MyObj) value;
setText(myObj.getName());
}
return this;
}
});
targetCombo.addItem(new MyObj("A"));
targetCombo.addItem(new MyObj("B"));
targetCombo.addItem(new MyObj("C"));
targetCombo.addItem(new MyObj("D"));
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new GridBagLayout());
frame.add(targetCombo);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
public class MyObj {
private String name;
public MyObj(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
}
您永远不需要使用外观包中的组件,除非您计划创建自己的外观。
在Bootstrap 4中,我们已经加了一系列的全局选项,让你能够在项目中轻松定制所有的组件。这些选项通过Sass变量来处理。通过内置的Gruntfile,可以简单改变一个变量的值,并重新编译。 可用的变量 您可以在_variables.scss文件找到这些变量并自定义这些变量。 变量 值 Description $spacer 1rem (默认), 或者任何大于0的值 为间隔工具指定默认的间隔值
我有一个JComboBox选择项目的问题,有人能帮我吗?我已经实现了一个图形用户界面窗口,其中有各种文本字段和一个JComboBox。当我点击按钮,代码必须创建一个对象与字符串的文本字段和字符串的ComboBox,但我有一个在...获取的代码是: 我也试过: 但是不要工作!我不知道我是否需要一个ActionListener,但我认为这不是必需的。
问题内容: 我使用下面提供的代码作为参考,添加了一个组合框作为单元格编辑器: 如何将唯一的JComboBoxes添加到JTable中的列(Java) 除了我的情况,我只需要一个组合框即可用于列中的所有单元格。我遇到的问题是,组合框会自动选择最后一个选定的项目(或不确定当前选定的项目),并且由于不同的行共享同一个组合框,因此如果单击其中一个单元格,它将自动更改到最后选择的项目。 作为快速演示,我只是
自定义脚本 Gradle构建脚本的标准名称是build.gradle,在一个多项目构建的环境中,你想自定义你的构建脚本名称来显得高大上一点,因为多个项目有相同的构建脚本名称可能会混淆,接下来介绍如何使用自定义的脚本名称。 还是之前那个例子,假设所有的子项目路径都是以todo-开头,比如web子项目就是在todo-web目录下,构建脚本名称应该清晰的表示它的作用,如下图所示: 要使这个结构起作用关键
我有以下Java代码: 运行它,你可以看到可见文本是左向的。 请注意,这段代码并不能解决我的问题(它将文本向右对齐,但仅在组合框展开时): 如何在同一窗口中显示文本的右端(...__zzzzzz)?提前致谢!
问题内容: 我正在使用Django 1.0.2。我已经写了一个由模型支持的ModelForm。此模型具有一个ForeignKey,其中blank = False。当Django为该表单生成HTML时,它会创建一个选择框,其中对ForeignKey引用的表中的每一行都有一个选项。它还在列表顶部创建一个没有值的选项,并显示为一系列破折号: 我想知道的是: 从选择框中删除此自动生成的选项的最干净的方法是