Java Swing的表格使用案例
·
一、主要效果

二、代码
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.MessageFormat;
import java.util.Random;
/**
* 设置图形化表格
*
* 无法设置表格的居中对齐。
*
* 表格怎么合并单元格?
* 怎么显示一些其他组件?
*/
public class JTableTest extends JFrame {
// 默认表格模型
private DefaultTableModel model = null;
private JTable table = null;
private JButton addBtn = null;
public JTableTest() {
super("TableDemo");
String[][] datas = {{"小明","男"},{"小芳","女"},{"小王","男"}};
String[] titles = {"名称", "性别"};
// 1、初始化数据模型,数据,标题
// 第一个参数是数据数组,第二个参数是标题对象数组。
model = new DefaultTableModel(datas, titles);
// 2、初始化JTable对象,用DefaultTableModel的对象
table = new JTable(model);
// 设置表格的行外间距
table.setRowMargin(10);
// 设置行的高度
table.setRowHeight(25);
addBtn = new JButton("添加数据");
addBtn.setToolTipText("添加数据");
// 设置大小没有用处
addBtn.setPreferredSize(new Dimension(20, 25));
addBtn.setSize(new Dimension(20, 25));
addBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 点击按钮就添加一行
model.addRow(new String[]{getRandomName(), getRandomSex()});
}
});
// 设置边框布局
setLayout(new BorderLayout());
add(new JPanel().add(addBtn), BorderLayout.NORTH);
// 用一个JScrollPane来装载JTable对象,用于内容溢出的时候可以滑动显示
add(new JScrollPane(table), BorderLayout.CENTER);
setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
}
private String getRandomName() {
String source = "王陈李张刘孙章胡赵吴邱颜杨唐何柳肖廖";
int len = source.length();
Random random = new Random(System.currentTimeMillis());
return MessageFormat.format("小{0}", source.charAt(random.nextInt(len)));
}
private String getRandomSex() {
String source = "男女";
int len = source.length();
Random random = new Random(System.currentTimeMillis());
return MessageFormat.format("{0}", source.charAt(random.nextInt(len)));
}
public static void main(String[] args) {
JTableTest test = new JTableTest();
}
}
三、主要缺点
1、无法设置居中。
2、无法在内部添加JTextField和JCheckBox对象。
更多推荐


所有评论(0)