如何在Java中更改JTable中每列的宽度?


JTable

  • JTable 是一个用于显示复杂数据结构的 JComponent 的子类。
  • JTable 可以遵循 模型-视图-控制器 (MVC) 设计模式 来显示数据,以的形式呈现。
  • DefaultTableModel 类可以扩展 AbstractTableModel 类,并且可以用来动态地向 JTable 添加行和列。
  • DefaultTableCellRenderer 类可以扩展 JLabel 类,并且可以用来在 JTable单元格中添加图像彩色文本等。
  • JTable 可以生成 TableModelListener、TableColumnModelListener、ListSelectionListener、CellEditorListener、RowSorterListener 接口。
  • 默认情况下,JTable 的宽度是固定的,我们也可以使用 JTable 类的 table.getColumnModel().getColumn().setPreferredWidth() 方法更改每列的宽度。

示例

import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
public class JTableTest extends JFrame {
   private JTable table;
   private JScrollPane scrollPane;
   private DefaultTableModel model;
   private DefaultTableCellRenderer cellRenderer;
   public JTableTest() {
      setTitle("JTable Test");
      setLayout(new FlowLayout());
      scrollPane = new JScrollPane();
      JTable table = new JTable();
      scrollPane.setViewportView(table);
      model = (DefaultTableModel)table.getModel();
      model.addColumn("S.No");
      model.addColumn("First Name");
      model.addColumn("Last Name");
      model.addColumn("Email");
      model.addColumn("Contact");
      for(int i = 0;i < 4; i++) {
         model.addRow(new Object[0]);
         model.setValueAt(i+1, i, 0);
         model.setValueAt("Tutorials", i, 1);
         model.setValueAt("Point", i, 2);
         model.setValueAt("@tutorialspoint.com", i, 3);
         model.setValueAt("123456789", i, 4);
      }
      // set the column width for each column
      table.getColumnModel().getColumn(0).setPreferredWidth(5);
      table.getColumnModel().getColumn(3).setPreferredWidth(100);
      cellRenderer = new DefaultTableCellRenderer();
      cellRenderer.setHorizontalAlignment(JLabel.CENTER);
      table.getColumnModel().getColumn(0).setCellRenderer(cellRenderer);
      add(scrollPane);
      setSize(475, 250);
      setResizable(false);
      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setLocationRelativeTo(null);
      setVisible(true);
   }
   public static void main(String[] args) {
      new JTableTest();
   }
}

输出

更新于: 2020年2月10日

7K+ 次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.