Swing/TableCellRenderer のバックアップの現在との差分(No.28)
- category: swing folder: TableCellRenderer title: JTableのセル幅で文字列を折り返し tags: [JTable, TableCellRenderer, JTextArea, JLabel] author: aterai pubdate: 2004-07-12T03:26:48+09:00 description: JTableのセル幅に合わせて文字列を折り返します。 image:
概要
JTable
のセル幅に合わせて文字列を折り返します。
Screenshot
Advertisement
サンプルコード
TableColumnModel tcm = table.getColumnModel();
tcm.getColumn(1).setCellRenderer(new TestRenderer());
tcm.getColumn(2).setCellRenderer(new TextAreaCellRenderer());
// ...
class TextAreaCellRenderer extends JTextArea implements TableCellRenderer {
TextAreaCellRenderer() {
super();
setLineWrap(true);
}
#spanadd
#spanend
@Override public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
setText((value == null) ? "" : value.toString());
return this;
}
}
// ...
class TestRenderer extends MyJLabel implements TableCellRenderer {
public TestRenderer() {
super();
setOpaque(true);
setBorder(BorderFactory.createEmptyBorder(0, 5, 0, 5));
}
#spanadd
#spanend
@Override public Component getTableCellRendererComponent(
JTable table, Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
// setHorizontalAlignment((value instanceof Number) ? RIGHT : LEFT);
setFont(table.getFont());
setText((value == null) ? "" : value.toString());
return this;
}
}
#spanadd
#spanend
class MyJLabel extends JLabel {
private GlyphVector gvtext;
public MyJLabel() {super();}
public MyJLabel() {
super();
}
#spanadd
#spanend
@Override protected void paintComponent(Graphics g) {
// super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
// ...
g2.drawGlyphVector(gvtext,
getInsets().left,
getFont().getSize()+getInsets().top);
}
// ...
}
View in GitHub: Java, Kotlin解説
0
列目- デフォルトの
JLabel
を継承するDefaultTableCellRenderer
を使用し、超過分は...
で省略 - デフォルトの
JLabel
を継承するDefaultTableCellRenderer
を使用し超過分は...
で省略
- デフォルトの
1
列目2
列目-
JTextArea
を継承するTableCellRenderer
を作成し、JTextArea#setLineWrap(boolean)
メソッドを使用して折り返しを有効化 -
JTextArea
を継承するTableCellRenderer
を作成しJTextArea#setLineWrap(boolean)
メソッドを使用して折り返しを有効化
-
参考リンク
- TableCellRendererでセルの背景色を変更
- JTableのセルの高さを自動調整
- セル幅だけでなく、高さも調整する方法のサンプル
- セル幅だけでなく高さも調整する方法のサンプル