我正在使用基于maven的java桌面应用程序,我正在使用jSwing框架进行界面操作。我需要在组合框中向人们展示任务和他们的名字,但我不确定我做得好。
在这段代码中,我从我的数据库中获取任务作为列表,然后我在组合框中显示它们。
List<TmsTask> task;
int i;
try {
task = Application.getApp().getMainService().getTasksList();
for (i = 0; i <= task.size(); i++) {
jComboBoxTask.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{task.get(i).getTaskName(),
task.get(i + 1).getTaskName(),
task.get(i + 2).getTaskName()}));
}
} catch (Exception ex) {
Logger.getLogger(BindTask.class.getName()).log(Level.SEVERE, null, ex);
}
它可以在组合框中看到任务名称。
问题是;我想使用该任务将其他信息保存到数据库。但是如你所见,选择的东西(在组合框中)只是任务名称,而不是任务对象。
如何将任务对象放在组合框选项部分?
在这段代码中,我曾尝试从数据库中获取Task对象并在组合框部分显示它们,但组合框部分都显示相同的任务名称。
private void jComboBoxTaskMousePressed(java.awt.event.MouseEvent evt) {
TmsTask task;
try {
task = Application.getApp().getMainService().getTasks();
jComboBoxTask.setModel(new javax.swing.DefaultComboBoxModel<>(new String[]{task.getTaskName(),
task.getTaskName(),
task.getTaskName()}));
} catch (Exception ex) {
Logger.getLogger(BindTask.class.getName()).log(Level.SEVERE, null, ex);
}
}
感谢您的帮助,最好的问候。
答案 0 :(得分:0)
addItem(...)
您无法继续创建新模型。这意味着只会显示最后一个任务。
你需要:
JTable
方法添加每个项目。虽然我怀疑你是否应该使用组合框。
我建议使用toString()
,它会显示行和列中的数据会更好。有关详细信息,请阅读How to Use Tables上的Swing教程中的部分。
编辑:
您可以将任何对象存储在组合框中。默认渲染器只使用对象的Task
方法在组合框中显示值。
因此,您可以在组合框中添加git rev-parse --abbrev-ref HEAD
对象,然后您需要创建一个自定义渲染器来显示&#34;任务名称&#34;在组合框中。有关此主题的更多信息以及渲染器的简单示例,请参阅Combobox With Custom Renderer。
答案 1 :(得分:0)
@camickr是对的(在评论中)。使用组合框显示Object中的所有字段没有多大意义。只需覆盖对象中的content_main
方法,默认渲染器就会显示它。
以下是使用简单Person对象(名称,年龄)的方法。
ListView