做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学习过程。

posted on 2012-10-22 13:07  codevoter  阅读(199)  评论(0编辑  收藏  举报

ASP.NET HOSTING