正如标题可能暗示,我想弄清楚如何更改行的类,但更具体地说,我试图改变某些行的类,而不是每一行。我所能找到的是如何更改列的类。JTable更改行类
我似乎无法找到如何调整特定行上的类。如果任何人可以指出我在正确的方向,将不胜感激。
正如标题可能暗示,我想弄清楚如何更改行的类,但更具体地说,我试图改变某些行的类,而不是每一行。我所能找到的是如何更改列的类。JTable更改行类
我似乎无法找到如何调整特定行上的类。如果任何人可以指出我在正确的方向,将不胜感激。
这是我想接近它:
public class TableRenderer {
interface ComponentTextSetter<T> {
void setText(String value, T component);
}
private static final Map<Component, ComponentTextSetter> components = new HashMap() {
{
put(new JLabel(), (ComponentTextSetter<JLabel>) (value, component) -> component.setText(value));
put(new JTextField(),
(ComponentTextSetter<JTextField>) (value, component) -> component.setText(value));
put(new JComboBox<>(), (ComponentTextSetter<JComboBox>) (value, component) -> {
component.addItem(value);
component.setSelectedItem(value);
});
}
};
private static TableCellRenderer renderer = new DefaultTableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column) {
Component jComponent = new ArrayList<>(components.keySet()).get(row % components.size());
components.get(jComponent).setText(value.toString(), jComponent);
return jComponent;
}
};
public static void main(String[] args) {
TableModel tableModel = new DefaultTableModel(10, 3) {
@Override
public Object getValueAt(int arg0, int arg1) {
return "value" + new Random().nextInt(4);
}
};
JTable jTable = new JTable(tableModel);
jTable.setDefaultRenderer(Object.class, renderer);
JOptionPane.showMessageDialog(null, jTable);
}
}
渲染器是不正确的地方设置,修改,更改模型值,只是模型被指定为 – mKorbel
@mKorbel在哪一行我的渲染器更改值? –
我没有看到任何解决方案,除了创建一个'CellRenderer'改变依赖于行的显示组件... –
@TimothyTruckle这就是我思考,但我已经通过了方法,似乎无法找到如何改变一个类而不改变整个列类。 –
你能告诉我们为什么你想要行类,以及上下文是什么? –