这一节学习JTable的基本操作:行选择和列宽度的调整
一、行选择分为单行(ListSelectionModel.SINGLE_SELECTION),多行连续(ListSelectionModel.SINGLE_INTERVAL_SELECTION)和多行非连续(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION)示例代码如下:
View Code
1 import java.awt.BorderLayout; 2 import java.awt.Container; 3 4 import javax.swing.JFrame; 5 import javax.swing.JScrollPane; 6 import javax.swing.JTable; 7 import javax.swing.ListSelectionModel; 8 9 public class JTableTest extends JFrame { 10 11 public JTableTest() { 12 Container contentPane = getContentPane(); 13 14 JTable table = new JTable(100, 10); 15 16 //单行模式 17 table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 18 //连续多行选择模式 19 table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); 20 //非连续多行选择模式 21 table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 22 JScrollPane jScrollPane = new JScrollPane(table); 23 contentPane.add(jScrollPane, BorderLayout.CENTER); 24 25 } 26 public static void main(String args[]) { 27 JFrameLaunch.launch(new JTableTest(), "Tables and Scrollpanes", 800, 28 600); 29 } 30 }
二、列宽度调整分为五种,分别为:AUTO_RESIZE_ALL_COLUMNS(在所有的调整大小操作中,按比例调整所有的列)、AUTO_RESIZE_LAST_COLUMN(在所有的调整大小操作中,只对最后一列进行调整)、AUTO_RESIZE_NEXT_COLUMN(在 UI 中调整了一个列时,对其下一列进行相反方向的调整)、AUTO_RESIZE_OFF(不自动调整列的宽度;使用滚动条)、AUTO_RESIZE_SUBSEQUENT_COLUMNS(在 UI 调整中,更改后续列以保持总宽度不变;此为默认行为)示例代码如下:
View Code
1 import java.awt.BorderLayout; 2 import java.awt.Container; 3 4 import javax.swing.JFrame; 5 import javax.swing.JScrollPane; 6 import javax.swing.JTable; 7 8 public class JTableTest extends JFrame { 9 10 public JTableTest() { 11 Container contentPane = getContentPane(); 12 13 JTable table = new JTable(100, 10); 14 15 // 在所有的调整大小操作中,按比例调整所有的列。 16 table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS); 17 18 // 在所有的调整大小操作中,只对最后一列进行调整。 19 table.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); 20 21 // 在 UI 中调整了一个列时,对其下一列进行相反方向的调整。 22 table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN); 23 24 // 在 UI 调整中,更改后续列以保持总宽度不变;此为默认行为。 25 table.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS); 26 27 // 不自动调整列的宽度;使用滚动条。 28 table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 29 30 JScrollPane jScrollPane = new JScrollPane(table); 31 contentPane.add(jScrollPane, BorderLayout.CENTER); 32 33 } 34 35 public static void main(String args[]) { 36 JFrameLaunch.launch(new JTableTest(), "Tables and Scrollpanes", 800, 37 600); 38 } 39 }