当前位置: 首页 > 知识库问答 >
问题:

为jtable中列的每一行添加不同的组合框

公孙宸
2023-03-14
public class TablePanel extends JPanel implements ActionListener,Serializable
{
    JTable m_table;
    JComboBox combo,combo1;
    DefaultTableModel model=new DefaultTableModel();
    DefaultComboBoxModel model1=new DefaultComboBoxModel();
    DefaultComboBoxModel model2=new DefaultComboBoxModel();
        List<String> field;
    List<String> attrCode;
    TablePanel()
    {

            m_table=new JTable(model);
            m_table.setBackground(Color.WHITE);
            model.addColumn("col1");
            model.addColumn("col2");
            model.addColumn("col3");
            model.addColumn("col4");
            model.addColumn("col5");
            model.addColumn("col6");
            JScrollPane scrollpane=new JScrollPane(m_table);
            scrollpane.setBackground(Color.WHITE);
            Dimension d = m_table.getPreferredSize();
            scrollpane.setPreferredSize(
                new Dimension(d.width,m_table.getRowHeight()*15+1));
            add(scrollpane);

            }

                       attrCode = service.getAllAttributes(value);
               combo1=new JComboBox(model2);
               model1.addElement(attrCode.get(0));
               model1.addElement(attrCode.get(1));
            model1.addElement(attrCode.get(2));
            model1.addElement(attrCode.get(3));
            model1.addElement(attrCode.get(4));
            model1.addElement(attrCode.get(5));
            model1.addElement(attrCode.get(6));
            col=m_table.getColumnModel().getColumn(0);
            col.setCellEditor((new DefaultCellEditor(combo1)));
            combo2=new JComboBox(model3);
            model3.addElement(trans.get(0));
            model3.addElement(trans.get(1));
            model3.addElement(trans.get(2));
            model3.addElement(trans.get(3));
            model3.addElement(trans.get(4));
            col=m_table.getColumnModel().getColumn(2);

            col.setCellEditor((new DefaultCellEditor(combo2)));} }

我有一个表,表中有一些列。两列有组合框,现在我想做的是,当用户从column1组合框中选择一些值时,根据用户选择的值,应该填充column2组合框。例如,如果用户从column1组合框中选择value1,则column2组合框将仅显示与value1对应的值。

共有1个答案

皇甫展
2023-03-14

渲染两列。

TableColumn comboCol1 = table.getColumnModel().getColumn(0);
TableColumn comboCol2 = table.getColumnModel().getColumn(1);
comboCol1.setCellEditor(new CustomComboBoxEditor());
comboCol2.setCellEditor(new CustomComboBoxEditor());

//这是针对第二列的,它取决于第一列的选择。

public class CustomComboBoxEditor extends DefaultCellEditor {

// Declare a model that is used for adding the elements to the `ComboBox`
private DefaultComboBoxModel model;

public CustomComboBoxEditor() {
    super(new JComboBox());
    this.model = (DefaultComboBoxModel)((JComboBox)getComponent()).getModel();
}

@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {


   if(column == 0) {
         // Just show the elements in the JComboBox.         
    } else {

           // Remove previous elements every time.
           // So that we can populate the elements based on the selection.
           model.removeAllElements();

           // getValueAt(..) method will give you the selection that is set for column one.
           String selectedItem = table.getValueAt(row, 0);

          // Using the obtained selected item from the first column JComboBox 
          // selection make a call ans get the list of elements.

         // Say we have list of data from the call we made. 
         // So loop through the list and add them to the model like the following.
         for(int i = 0; i < obtainedList.size(); i++) {
                model.addElement(obtainedList.get(i));
         } 
     } // Close else

    // finally return the component.
    return super.getTableCellEditorComponent(table, value, isSelected, row, column);
 }
}
 类似资料:
  • 我正试图将每个列单元格具有不同值的组合框加载到我的JTable中,但我找不到任何实现这一点的方法。第一列的代码如下: 根据返回的系列名称,将执行一个新的查询,以获取每个系列的所有插曲。所以他们都是不同的。下面的图片让我们了解一下我的意思: 第二列现在应该包含根据第一列的系列的剧集,但它们都是相同的。

  • 我希望在R中自动化一个过程,这个过程以前是手工完成的,非常耗时。我想从一个数据帧向另一个数据帧中的每个唯一变量添加一系列观察结果。使用数据的示例可能会更好地说明这一点。。。 表1包含了对每种动物的大量观察,这是我想为每种动物添加一组行的表。 表2显示了应应用于每只动物的行。 最后一个表应该如下所示: 有人能给我指出正确的方向吗?优先使用tidyverse超过基本R(但不是必需的:))

  • 我有一个在运行时加载行的表。加载后,用户需要在每一行的第一列中从中选择一个项目。然后他需要在每行的同一行上从另一个中选择一个项目。第二个的内容取决于第一个的选择。 我现在的编码方式是更改整个第二列的combobox内容。 有没有一种方法可以让每一行的组合框对象都不一样,这样我就可以在第一个组合框中选择一个值的时候处理它?

  • 问题内容: 我想在第1列的JTable(3,3)内添加JComboBox。但是在第1列中,每一行都有其自己的ComboBox元素集。当我尝试使用 每行都设置为同一组ComboBox值。但是我希望每一行ComboBox都有不同的项目。 问题答案: java2s.com上的示例看起来可以正常工作,然后再进行示例(例如,我将JComboBoxes编码为快速示例,并为今天的Swing添加/更改) 只需添加

  • 我有一张桌子,不知怎的,同一个人进了我的桌子两次。现在,主键只是一个自动编号,但还有两个字段存在,我想强制它们是唯一的。 例如,这些字段是: 我只想要一张带有唯一PersonNumber和Active=1的唱片 (因此这两个字段的组合必须是唯一的) SQL server中现有表的最佳方式是什么?我可以这样做,如果其他任何人使用与现有值相同的值进行插入,则插入失败,因此我不必在应用程序代码中担心这一