CyborgBeta
Banned
- Registriert
- Jan. 2021
- Beiträge
- 3.405
Hi ... habe ich hier etwas übersehen? Nach StackOverflow sollte das funktionieren ... Link: https://stackoverflow.com/a/32793088
Anstatt multiline wird aber jeweils immer nur eine Zeile dargestellt:
Ich habe bestimmt in der
BTW. Ich hasse unvollständige (oder falsche) SSCCEs ... und genau das scheint hier der Fall zu sein.
Java:
import java.awt.*;
import java.util.ArrayList;
import java.util.List;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableCellRenderer;
public class TableTest {
static class MultiLineTableModel extends AbstractTableModel {
private final List<String[]> data = new ArrayList<>();
public void addRow(String[] row) {
data.add(row);
fireTableDataChanged();
}
public void clearRows() {
data.clear();
fireTableDataChanged();
}
@Override
public int getRowCount() {
return data.size();
}
@Override
public int getColumnCount() {
return 1;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return data.get(rowIndex);
}
@Override
public String getColumnName(int column) {
return "Messages";
}
}
static class MultiLineTableCellRenderer extends JList<String> implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (value instanceof String[]) {
setListData((String[]) value);
}
if (isSelected) {
setBackground(UIManager.getColor("Table.selectionBackground"));
} else {
setBackground(UIManager.getColor("Table.background"));
}
return this;
}
}
public static void main(String[] args) {
MultiLineTableModel model = new MultiLineTableModel();
JTable table = new JTable(model);
table.setDefaultRenderer(String[].class, new MultiLineTableCellRenderer());
JFrame frame = new JFrame();
frame.add(new JScrollPane(table));
frame.setSize(400, 400);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setVisible(true);
model.addRow(new String[] {"Index 1", "From 1", "Subject 1"});
model.addRow(new String[] {"Index 2", "From 2", "Subject 2"});
}
}
Anstatt multiline wird aber jeweils immer nur eine Zeile dargestellt:
Ich habe bestimmt in der
main()
was falsch gemacht. Danke.BTW. Ich hasse unvollständige (oder falsche) SSCCEs ... und genau das scheint hier der Fall zu sein.