Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JTable单元格中使用JLists?_Java_Swing_Jtable_Jlist - Fatal编程技术网

Java 如何在JTable单元格中使用JLists?

Java 如何在JTable单元格中使用JLists?,java,swing,jtable,jlist,Java,Swing,Jtable,Jlist,我想用一种简单的方法将JList放在JTable的列中。我已经有了JLists和表,但是当放入表中时,JLists显示为字符串,这是正常的,因为我使用DefaultTableModel。我已将getColumnClass()重写为: public Class我已经做到了。对于每一个需要同样东西的人,以下是我所做的: 1) 我已经创建了一个JScrollTableRenderer,并设置了显示JList所需的列以使用此渲染器 table.getColumnModel().getColumn

我想用一种简单的方法将JList放在JTable的列中。我已经有了JLists和表,但是当放入表中时,JLists显示为字符串,这是正常的,因为我使用DefaultTableModel。我已将getColumnClass()重写为:


public Class我已经做到了。对于每一个需要同样东西的人,以下是我所做的:

1) 我已经创建了一个JScrollTableRenderer,并设置了显示JList所需的列以使用此渲染器

    table.getColumnModel().getColumn(5).setCellRenderer(new JScrollTableRenderer());
JScrollTableRenderer类内容:

public class JScrollTableRenderer extends DefaultTableCellRenderer {

JScrollPane pane = new JScrollPane();

public JScrollTableRenderer()
{
    super();
}

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
      boolean hasFocus, int row, int column)
{
    pane = (JScrollPane) value;
    return pane;
}
}
    public class JScrollTableEditor extends AbstractCellEditor implements TableCellEditor {
    JScrollPane component = new JScrollPane();
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
          int rowIndex, int vColIndex)
    {
        component = ((JScrollPane) value);
        return ((JScrollPane) value);
    }

    public Object getCellEditorValue()
    {
        return component;
    }

    }
2) 我创建了一个JScrollTableEditor,并设置了显示JList所需的列以使用此编辑器

    table.getColumnModel().getColumn(5).setCellEditor(new JScrollTableEditor());
JScrollTableEditor类内容:

public class JScrollTableRenderer extends DefaultTableCellRenderer {

JScrollPane pane = new JScrollPane();

public JScrollTableRenderer()
{
    super();
}

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
      boolean hasFocus, int row, int column)
{
    pane = (JScrollPane) value;
    return pane;
}
}
    public class JScrollTableEditor extends AbstractCellEditor implements TableCellEditor {
    JScrollPane component = new JScrollPane();
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
          int rowIndex, int vColIndex)
    {
        component = ((JScrollPane) value);
        return ((JScrollPane) value);
    }

    public Object getCellEditorValue()
    {
        return component;
    }

    }
3) 我在JTable模型中添加了此方法:

            public Class<? extends Object> getColumnClass(int c)
            {
                if(c == 5) return JScrollPane.class;
                else return getValueAt(0, c).getClass();
            }

public类阅读更多关于和的信息,并阅读此感谢。我已经读过了。。我会再读一遍,试着自己写。