有没有办法同时对齐jtable中的所有列? 用这个:
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment( JLabel.RIGHT );
JTAB_TABLE.getColumnModel().getColumn(0).setCellRenderer( rightRenderer );
让我只对齐一列,但我需要对齐所有。
答案 0 :(得分:5)
通常,表包含不同类型的数据(日期,数字,布尔值,字符串),强制所有类型的数据都正确对齐是没有意义的。
但是,如果您有一个包含所有相同类型数据的表,并且您希望强制所有列的渲染相同,那么您应该使用相同的渲染器。假设您使用的是默认渲染器,则可以使用:
DefaultTableCellRenderer renderer = (DefaultTableCellRenderer)table.getDefaultRenderer(Object.class);
renderer.setHorizontalAlignment( JLabel.RIGHT );
答案 1 :(得分:2)
您可以通过覆盖JTable中的prepareRenderer(...)
来实现。这假定任何自定义渲染器都是JLabel(默认情况下它们是JLabel)。否则你必须要防范它。
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class TableDemo implements Runnable
{
public static void main(String[] args)
{
SwingUtilities.invokeLater(new TableDemo());
}
public void run()
{
JTable table = new JTable(5, 5)
{
@Override
public Component prepareRenderer(TableCellRenderer renderer,
int row, int col)
{
Component comp = super.prepareRenderer(renderer, row, col);
((JLabel) comp).setHorizontalAlignment(JLabel.RIGHT);
return comp;
}
};
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane(table);
JFrame frame = new JFrame();
frame.getContentPane().add(scrollPane);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}