我正在尝试为JComboBoxes
中的列添加唯一性JTable
。我知道有可能使用添加JComboBox
到整个列
TableColumn col = table.getColumnModel().getColumn(columnNumber);
col.setCellEditor(new MyComboBoxEditor(values));
但我需要每个JComboBox
人都不同,并在其中包含不同的字符串。有任何想法吗?
重写getCellEditor(…)方法。例如;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import java.util.ArrayList;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.*;
public class TableComboBoxByRow extends JFrame
{
List<TableCellEditor> editors = new ArrayList<TableCellEditor>(3);
public TableComboBoxByRow()
{
// Create the editors to be used for each row
String[] items1 = { "Red", "Blue", "Green" };
JComboBox comboBox1 = new JComboBox( items1 );
DefaultCellEditor dce1 = new DefaultCellEditor( comboBox1 );
editors.add( dce1 );
String[] items2 = { "Circle", "Square", "Triangle" };
JComboBox comboBox2 = new JComboBox( items2 );
DefaultCellEditor dce2 = new DefaultCellEditor( comboBox2 );
editors.add( dce2 );
String[] items3 = { "Apple", "Orange", "Banana" };
JComboBox comboBox3 = new JComboBox( items3 );
DefaultCellEditor dce3 = new DefaultCellEditor( comboBox3 );
editors.add( dce3 );
// Create the table with default data
Object[][] data =
{
{"Color", "Red"},
{"Shape", "Square"},
{"Fruit", "Banana"},
{"Plain", "Text"}
};
String[] columnNames = {"Type","Value"};
DefaultTableModel model = new DefaultTableModel(data, columnNames);
JTable table = new JTable(model)
{
// Determine editor to be used by row
public TableCellEditor getCellEditor(int row, int column)
{
int modelColumn = convertColumnIndexToModel( column );
if (modelColumn == 1 && row < 3)
return editors.get(row);
else
return super.getCellEditor(row, column);
}
};
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
}
public static void main(String[] args)
{
TableComboBoxByRow frame = new TableComboBoxByRow();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
我只是试图将JComboBox添加到最后一列的所有行中。代码在下面。 当我运行这段代码时,它只在第3列显示true of false,而不是JComboBox?有人能找出问题所在吗?非常感谢
我试图在现有JTable的基础上添加一行JTable,该JTable通常是动态创建的,并且经常更改其数据模型。 如您所见,黄色区域仅代表一个行计数器,它是使用此源创建的 因此,使用以下代码将黄色列附加到主表: 表列A、B、C等等,如果单击,将相应地对JTable进行排序,并且应该维护此功能(我不想将JCombobox放在表头中,除非有一种巧妙的方法来完成这两项工作)。 我的目标是创建一个具有一行的
问题内容: 我想补充到。我用了给定的代码 但是,当我运行此命令时,我将获得另一种颜色的列,并且当我单击单选按钮时,什么也没有发生。我正在使用netbeans。如果我尝试自定义,则不会显示任何内容。给我适当的指导。 问题答案: 如果要编辑表格单元格的值,则必须设置一个。 您应该在渲染器中创建一个单一文件,并在任何地方重复使用,这就是TableCellRenderer的目的。 如果您不打电话,则不需要
问题内容: 需要一个简单的Swing代码来演示如何使用tablecellrenderer和tablecelleditor在Jtable的列中添加按钮。 问题答案: 将按钮添加到 Sample ,这是管理列和行,设置组件 Sample ,它管理在组件上单击鼠标的时间 示例JTable单元格渲染器,管理单元格组件
问题内容: 我正在尝试向JTable中的特定列添加滚动功能。我已经实现了一个自定义的TableCellRenderer组件,并且可以看到表中的滚动窗格很好,但是我无法滚动它。我也尝试实现TableCellEditor,但没有任何运气。 有谁知道如何使包含scrollPane的单元格可滚动? 问题答案: 使用TableCellRenderer不可能添加任何滚动行为,因为它不接收任何事件,仅绘制组件。