swing中的表格

1.基本表格
显示一个Table需要两组数据

  1. 一维数组: String[]columnNames 表示表格的标题
  2. 二维数组: String[][] heros 表格中的内容
    默认情况下,表格的标题是不会显示出来了,除非使用了JScrollPane

代码如下:

package gui10;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JTable;

public class test1 {

	public static void main(String[] args) {
		JFrame f = new JFrame("LoL");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        f.setLayout(new BorderLayout());
 
        // 表格上的title
        String[] columnNames = new String[] { "id", "name", "hp", "damage" };
        // 表格中的内容,是一个二维数组
        String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },
                { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };
        JTable t = new JTable(heros,columnNames);
        f.add(t,BorderLayout.CENTER);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
	}
}

结果:
在这里插入图片描述
2.JScrollPane
上面看的是没有标题的表格,那么如何才能看到有标题的表格呢?
JScrollPane: 带滚动条的Panel
把table放进去就可以看到table的title

代码如下:

package gui10;
import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
public class test2 {

	public static void main(String[] args) {
        JFrame f = new JFrame("LoL");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        f.setLayout(new BorderLayout());
 
        String[] columnNames = new String[] { "id", "name", "hp", "damage" };
        String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },
                { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };
        JTable t = new JTable(heros,columnNames);
        // 根据t创建 JScrollPane
        JScrollPane sp = new JScrollPane(t);
        f.add(sp);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
	}
}

结果:
在这里插入图片描述
和上面的相比,这里的表格多了标题。(这就是使用JScrollPane的区别)

3.列宽
如何来设置表格列的宽度呢?
代码如下:

package gui10;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;

public class test3 {

	public static void main(String[] args) {
		JFrame f = new JFrame("LoL");
        f.setSize(400, 300);
        f.setLocation(200, 200);
        f.setLayout(new BorderLayout());
 
        String[] columnNames = new String[] { "id", "name", "hp", "damage" };
        String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },
                { "2", "提莫", "512", "102" }, { "3", "奎因", "832", "200" } };
        
        JTable t = new JTable(heros,columnNames);
        JScrollPane sp = new JScrollPane(t);
        t.getColumnModel().getColumn(0).setPreferredWidth(10);
        f.add(sp);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
	}
}

结果:
在这里插入图片描述
和上面的表格相比,这张表格的宽度发生了改变。其实就是多加了:t.getColumnModel().getColumn(0).setPreferredWidth(10);

4.TableModel
这里要介绍一个新概念叫TableModel,这个概念十分重要。

首先说下TableModel的设计思想,在Model这种思想的指导下,数据和显示分离开来了。 比如对于JTable而言,有数据部分,也有显示部分(比如列宽等信息)。 数据部分,专门做一个类,叫做TableModel,就用于存放要显示的数据。

使用TableModel的方式存放Table需要显示的数据
HeroTableModel 继承AbstractTableModel ,进而实现了接口TableModel
在HeroTableModel 中提供一个table显示需要的所有信息

  1. getRowCount 返回一共有多少行
  2. getColumnCount 返回一共有多少列
  3. getColumnName 每一列的名字
  4. isCellEditable 单元格是否可以修改
  5. getValueAt 每一个单元格里的值

当图形界面需要渲染第一个单元格的数据的时候,就会调用方法TabelModel的getValueAt(0,0) ,把返回值拿到并显示

代码如下:

package gui10;

import javax.swing.table.AbstractTableModel;

public class HeroTableModel extends AbstractTableModel{

	String[] columnNames = new String[] { "id", "name", "hp", "damage" };
    String[][] heros = new String[][] { { "1", "盖伦", "616", "100" },
            { "2",
  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要创建一个表格,你需要使用Java Swing的JTable类。你可以使用以下步骤来创建一个表格: 1. 创建一个表格模型TableModel,该模型将提供表格的数据。你可以使用DefaultTableModel类来创建一个默认的表格模型。 2. 创建一个JTable对象并将其绑定到表格模型。 3. 将JTable添加到一个滚动窗格,以便在表格有许多行和列时可以滚动。 下面是一个简单的Java代码示例,演示了如何创建一个表格: ```java import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.table.DefaultTableModel; public class MyFrame extends JFrame { public MyFrame() { // 创建表格模型 DefaultTableModel model = new DefaultTableModel(); // 添加表头 model.addColumn("姓名"); model.addColumn("年龄"); model.addColumn("性别"); // 添加数据行 model.addRow(new Object[]{"张三", 20, "男"}); model.addRow(new Object[]{"李四", 22, "女"}); model.addRow(new Object[]{"王五", 25, "男"}); // 创建表格 JTable table = new JTable(model); // 将表格添加到滚动窗格 JScrollPane scrollPane = new JScrollPane(table); // 创建一个面板并将滚动窗格添加到面板 JPanel panel = new JPanel(); panel.add(scrollPane); // 将面板添加到窗口 this.add(panel); // 设置窗口属性 this.setTitle("表格示例"); this.setSize(400, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String[] args) { new MyFrame(); } } ``` 这个例子创建了一个包含三列数据的表格,然后将其添加到一个窗口。你可以根据需要修改表格模型来显示不同的数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值