Jtable在同一行中左右对齐文本

时间:2012-10-01 16:15:48

标签: java swing jtable


尝试在Jtable上实现此目的。

我试图将两个单词对齐,如左侧一个,右侧另一个,但在同一行。

String html="<html><div style='float:left;width:50%;'>left</div><div style='float:right;width:50%;'>right</div></html>";
Object rowData[][] = { { html, "Column2-data"}};

不幸的是它没有用。我也尝试使用 p 标记和 font 标记。

请帮助我如何使用HTML标记实现此目的。

1 个答案:

答案 0 :(得分:3)

您可以创建自己的表格单元格渲染器,使文本在JTable中居中

public class CenterCellRenderer extends DefaultTableCellRenderer {
        @Override
        public Component getTableCellRendererComponent(JTable table,
                Object value, boolean isSelected, boolean hasFocus, int row,
                int column) {
            JLabel renderedLabel = (JLabel) super
                    .getTableCellRendererComponent(table, value, isSelected,
                            hasFocus, row, column);
            renderedLabel.setHorizontalAlignment(JLabel.CENTER);
            return renderedLabel;
        }
    }

要为整个表使用此表格单元格渲染器:

TableCellRenderer renderer = new CenterCellRenderer();
table.setDefaultRenderer(Object.class, renderer);

要定义列特定的渲染器,您需要定义覆盖JTable方法的getCellRenderer子类

table = new JTable(...) {
    public TableCellRenderer getCellRenderer(int row, int column) {
        if (column == 2) {
            return renderer;
        }
        // else...
        return super.getCellRenderer(row, column);
    }
};

现在我已经考虑了你的问题了,我将文本放在两列中。如有必要,您可以使用右对齐单元格渲染器右对齐第二列中的文本,类似于我为居中文本创建的单元格。