做Java开发也有四年的时间了,但是从来没有系统的学习过Swing的知识,最近忙里偷闲看了看Swing的相关书籍,感觉还是蛮有意思的。今天先记录一下JTable的学习经历。
为了避免重复代码,写了一个工具类,功能就是启动主窗口为800×600分辨率并置中,代码如下:
View Code
1 import java.awt.Dimension; 2 import java.awt.Toolkit; 3 4 import javax.swing.JFrame; 5 import javax.swing.WindowConstants; 6 7 8 public class JFrameLaunch { 9 public static void launch(final JFrame f, String title, final int w, int h) { 10 f.setTitle(title); 11 f.setSize(w, h); 12 f.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); 13 14 centerScreen(f); 15 16 f.setVisible(true); 17 } 18 public static void centerScreen(JFrame f){ 19 Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize(); 20 int width = (int) dimension.getWidth(); 21 int height = (int) dimension.getHeight(); 22 f.setLocation((width - f.getWidth())/2, (height - f.getHeight())/2); 23 } 24 }
1、下面开始介绍JTable,JTable的构造函数有好多,我们先从最简单的开始:
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 //生成一个100×10的表格 14 JTable table = new JTable(100, 10); 15 JScrollPane jScrollPane = new JScrollPane(table); 16 contentPane.add(jScrollPane, BorderLayout.CENTER); 17 18 } 19 20 public static void main(String args[]) { 21 JFrameLaunch.launch(new JTableTest(), "Tables and Scrollpanes", 22 800, 600); 23 } 24 }
2、通过运行程序我们可以看到,以上代码的功能是将JTable添加到一个滚动框内显示在界面上。并且程序自动的为我们显示了一个默认的表头,而且在表格内容滚动的时候表头是始终显示的。假设我们不把JTable添加在JScrollPane内,如代码
View Code
1 JTable table = new JTable(100, 10); 2 // JScrollPane jScrollPane = new JScrollPane(table); 3 contentPane.add(table, BorderLayout.CENTER);
此时界面中的表格是没有显示表头的,除非我们修改代码如下:
View Code
1 JTable table = new JTable(100, 10); 2 // JScrollPane jScrollPane = new JScrollPane(table); 3 contentPane.add(table.getTableHeader(), BorderLayout.PAGE_START); 4 contentPane.add(table, BorderLayout.CENTER);
可以看到此时的代码有点儿自找麻烦的味道,并且表格的内容没有办法显示完整。
3、有时候我们想添加自己的数据,并且要自定义表头,那么可以这样做:
View Code
1 String[] columnNames = {"First Name", 2 "Last Name", 3 "Sport", 4 "# of Years", 5 "Vegetarian"}; 6 7 Object[][] data = { 8 {"Kathy", "Smith", 9 "Snowboarding", new Integer(5), new Boolean(false)}, 10 {"John", "Doe", 11 "Rowing", new Integer(3), new Boolean(true)}, 12 {"Sue", "Black", 13 "Knitting", new Integer(2), new Boolean(false)}, 14 {"Jane", "White", 15 "Speed reading", new Integer(20), new Boolean(true)}, 16 {"Joe", "Brown", 17 "Pool", new Integer(10), new Boolean(false)} 18 }; 19 20 JTable table = new JTable(data, columnNames); 21 JScrollPane jScrollPane = new JScrollPane(table); 22 contentPane.add(jScrollPane, BorderLayout.CENTER);
以上为学习JTable的第一节,还会陆续发布我的JTable学习过程。