Ich möchte zeigen eine JTable
wie das Bild unten erstellen: Wie mehrere Zeilen in einer JTable Zelle
Welche java
Klasse verwendet werden und möglicherweise wie?
Ich möchte zeigen eine JTable
wie das Bild unten erstellen: Wie mehrere Zeilen in einer JTable Zelle
Welche java
Klasse verwendet werden und möglicherweise wie?
im Grunde kann man jede Art von JComponents
auf die JTable
Zelle setzen, hängt von wenn ist Inhalt editierbar, das ist im Gespräch mir folgt
JTable
mit einem TableColumn
ohne TableHeader
JPanel
(GridBagLayout
) mit JLabels
oder JTextFields
JList
Wenn eine Tabelle große Datenmengen enthält, wird die Verwendung der Bildlaufleiste in der JTable angewendet. Das JScrollPane bietet Ihnen eine scrollbare Funktion zum Scrollen der Bildlaufleiste und Sie erhalten den gesamten Inhalt. Einfaches Beispiel JTable mit:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
public class ScrollableJTable{
public static void main(String[] args) {
new ScrollableJTable();
}
public ScrollableJTable(){
JFrame frame = new JFrame("Creating a Scrollable JTable!");
JPanel panel = new JPanel();
String data[][] =
{{"001","abc","xyz","wtwt","gwgw","tttr","rtrt"},
{"002","rwtr","ttrt","rtttr","trt","rtrt","trtrd"},
{"003","rtt","trt","trt","trrttr","trt","rtr"},
{"004","trt","trtt","trtrt","rtrtt","trt","trrt"},
{"001","rttr","trt","trt","trtr","trt","trttr"},
;
JTable table = new JTable(data,col);
JTableHeader header = table.getTableHeader();
header.setBackground(Color.yellow);
JScrollPane pane = new JScrollPane(table);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
panel.add(pane);
frame.add(panel);
frame.setSize(500,150);
frame.setUndecorated(true);
frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Jetzt können Sie diese Tabelle ändern nach Ihren Anforderungen
at line 'neue JTable (data, col)', 'col' Variable kann nicht gefunden werden. Was ist es? –
Dies entspricht nicht annähernd der Frage des ursprünglichen Posters. Er möchte mehrere Zeilen in einer Tabellenzelle. –
@HovercraftFullOfEels Ich habe gerade eine Demo für diese Frage gezeigt, so dass er sie entsprechend ändern kann – harry
mehrzeilige JTable
Zelle kann leicht eine angepasste TableCellRenderer
machen verwenden. Verwenden Sie die folgenden Schritte, um das TableCellRenderer
zu erstellen.
Schritt 1: TableCellRenderer
folgenden Code erstellen zeigt eine mehrzeilige TableCellRenderer
für String[]
Werte zu schaffen. Es ist möglich, die String[]
in eine Vector
oder einem anderen Collection
public class MultiLineTableCellRenderer extends JList<String> implements TableCellRenderer {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
//make multi line where the cell value is String[]
if (value instanceof String[]) {
setListData((String[]) value);
}
//cell backgroud color when selected
if (isSelected) {
setBackground(UIManager.getColor("Table.selectionBackground"));
} else {
setBackground(UIManager.getColor("Table.background"));
}
return this;
}
}
Schritt 2 zu ändern: mein getestet Screenshot Set TableCellRenderer
in die JTable
MultiLineTableCellRenderer renderer = new MultiLineTableCellRenderer();
//set TableCellRenderer into a specified JTable column class
table.setDefaultRenderer(String[].class, renderer);
//or, set TableCellRenderer into a specified JTable column
table.getColumnModel().getColumn(columnIndex).setCellRenderer(renderer);
Dies ist:
Upvoted, um den elegantesten Weg mit TableCellRenderer zu zeigen. –
was für ein Wack, es funktioniert einfach nicht. awt saugt: '( – mekkanizer
@mekkanizer: Ich kann es durchgehen, wenn Sie Ihren Code mit mir teilen. –
bitte warum down_vote +1 – mKorbel