`
行者买刀
  • 浏览: 194220 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

整理swing之JTable渲染(1)

    博客分类:
  • J2SE
阅读更多

数码户外 出游全攻略

  

JTable(TableModel dm, TableColumnModel cm) 
          构造 JTable,使用 dm 作为数据模型、cm 作为列模型和默认的选择模型对其进行初始化。

 

采用数据模型与列模型进行构造JTable.

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.lgh.j2se.fuxi;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import java.awt.Image;
import java.util.ArrayList;
import java.util.List;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

/**
 * 测试学习jtable
 * @author lgh
 */
public class JTableTest extends JFrame {

    private List<User> list;

    public JTableTest(List<User> list) {
        this.list = list;
        init();
    }

    private void init() {
        this.setSize(800, 600);
        this.setLocationRelativeTo(null);
        this.setLayout(new BorderLayout());
        this.add(new JScrollPane(createJTable()), BorderLayout.CENTER);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }

    /**
     * 创建JTable
     * @return
     */
    private JTable createJTable() {
        String[] strs = new String[]{"用户名", "密码"};
        int[] widths = new int[]{100, 100};
        JTable jtable = new JTable(new MyTableModel(), new MyTableColumnModel(strs, widths));
        jtable.setRowHeight(50);
        jtable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
        return jtable;
    }

    public static void main(String[] args) {
        List<User> list = new ArrayList<User>();
        list.add(new User("lgh", "lgh"));
        list.add(new User("lgh", "lgh"));
        list.add(new User("lgh", "lgh"));
        list.add(new User("lgh", "lgh"));
        list.add(new User("lgh", "lgh"));
        list.add(new User("lgh", "lgh"));
        JTableTest test = new JTableTest(list);

    }

    private class ColumnCellRenderer extends JLabel implements TableCellRenderer {

        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            this.setHorizontalAlignment(JLabel.CENTER);
            this.setFont(new Font("宋体", Font.PLAIN, 12));
            this.setOpaque(true);
            if (row % 2 == 0) {
                setBackground(new Color(36, 38, 57));
            } else {
                setBackground(new Color(42, 43, 63));
            }
            if (isSelected) {
                setBackground(new Color(96, 99, 131));
            } else {
               setBackground(Color.WHITE);
            }
            if (value == null) {
                setText("");
            } else {
                if (value instanceof Image) {
                    setIcon(new ImageIcon((Image) value));
                } else {
                    setText(value.toString());
                }
            }
            return this;
        }
    }

    /**
     * 列模型
     */
    private class MyTableColumnModel extends DefaultTableColumnModel {

        private String[] strs;
        private int[] widths;
        private ColumnCellRenderer head;
        private ColumnCellRenderer cell;

        public MyTableColumnModel(String[] strs, int[] widths) {
            this.strs = strs;
            this.widths = widths;
            head = new ColumnCellRenderer();
            cell = new ColumnCellRenderer();
            init();
        }

        private void init() {
            for (int i = 0; i < strs.length; i++) {
                TableColumn tc = new TableColumn(i);
                tc.setHeaderRenderer(head);
                tc.setCellRenderer(cell);
                tc.setHeaderValue(strs[i]);
                tc.setPreferredWidth(widths[i]);
                this.addColumn(tc);
            }
        }
    }

    /**
     * 数据模型
     */
    private class MyTableModel extends AbstractTableModel {

        /**返回当前的行数**/
        public int getRowCount() {
            if (list != null) {
                return list.size();
            } else {
                return 0;
            }
        }

        /**返回当前的列数**/
        public int getColumnCount() {
            return 2;
        }

        public Object getValueAt(int rowIndex, int columnIndex) {
            User user = list.get(rowIndex);
            switch (columnIndex) {
                case 0:
                    return user.getUsername();
                case 1:
                    return user.getPassword();
                default:
                    return "";
            }
        }
    }
}

 

  • 大小: 8.1 KB
分享到:
评论

相关推荐

    Swing之JTable+JComboBox的详细介绍[zone yan]

    在Java的Swing库中,`JTable`和`JComboBox`是两个非常重要的组件,它们常被用于创建用户界面,展示数据并提供交互性。`JTable`用于展示二维表格数据,而`JComboBox`则是一种下拉选择框,可以提供多个选项供用户选择...

    Java Swing中JTable渲染器与编辑器用法示例

    Java Swing中JTable渲染器与编辑器用法示例 Java Swing中JTable渲染器与编辑器用法示例是Java Swing中一个重要的组件,主要用于显示和编辑表格数据。在Java Swing中,JTable是最基本的表格组件,渲染器和编辑器是...

    Swing中JTABLE中添加JBUTTON控件

    在Java的Swing库中,`JTable`是用于创建数据网格视图的重要组件,它允许用户以表格的形式查看和操作数据。而`JButton`则是一个常用的按钮控件,通常用于触发某些动作或事件。将`JButton`添加到`JTable`中可以为用户...

    swing中JTable的简单使用

    它提供了丰富的组件,其中之一就是JTable,这是一个强大的组件,用于展示二维数据集,并允许用户进行交互操作。在"swing中JTable的简单使用"这个主题中,我们将深入探讨如何在Java Swing应用中有效地使用JTable。 ...

    中级SWING-JTable属性

    ### 中级SWING-JTable属性详解 在Java Swing框架中,`JTable`是一个非常重要的组件,用于展示表格数据。为了更好地控制表格的表现形式及功能,`JTable`提供了多种属性设置方法。以下是对给定内容中提到的一些关键...

    JTable颜色渲染代码

    根据给定文件的信息,本文将围绕“JTable颜色渲染代码”这一主题展开,重点解析JTable的基本操作、初始化方法及高级的颜色渲染功能。 ### JTable简介 JTable是Swing库中的一个组件,用于在Java应用程序中显示表格...

    swing 中Jtable例子

    然后将这个渲染器设置给`JTable`: ```java table.setDefaultRenderer(Object.class, new MergingCellRenderer()); ``` 至于字体、字号、背景色和前景色的设置,`TableCellRenderer`同样能胜任。例如,你可以修改`...

    Jtable 中放入多个按钮

    在Java Swing库中,`JTable`是一个非常重要的组件,用于展示二维数据表格。当我们需要在`JTable`中实现更复杂的交互,比如在一个单元格内放置多个按钮时,这通常涉及到自定义`TableCellRenderer`和`TableCellEditor`...

    swing jtable 合并

    `Swing之JTable详解.doc`可能包含了`JTable`的基本用法、构造函数、方法以及如何添加、删除和修改表格数据等内容。`2.高级Swing组件JTable应用.doc`可能进一步讨论了`JTable`的高级特性,如排序、过滤、拖放操作,...

    复杂JTable-跨列表头

    1. **GroupableTableHeaderUI**: 这是JTable表头的自定义UI实现,负责渲染合并后的表头。UI组件是Java Swing中的核心部分,它们决定了组件的外观和行为。GroupableTableHeaderUI将处理表头的绘制逻辑,包括合并区域...

    JTable自动换行

    在Java的Swing库中,`JTable`是用于创建二维数据展示的组件,它类似于电子表格。在处理`JTable`时,我们有时需要使其单元格内容支持自动换行,以便更好地显示长文本。标题“JTable自动换行”正是指向这个功能,即...

    共享一个Swing JTable组件的CheckBox管理类

    1. **初始化复选框**:为JTable的某一列创建并设置CheckBox作为默认的单元格编辑器和渲染器。 2. **状态同步**:确保当用户通过界面勾选或取消复选框时,模型中的对应数据也会更新,反之亦然。 3. **事件处理**:...

    Jtable中加入复选框的两种方法

    import javax.swing.JTable; import javax.swing.event.TableModelEvent; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableCellRenderer; public class table implements ...

    JTable 操作单元格 行 列

    在Java Swing库中,`JTable`是一个非常重要的组件,用于在GUI应用程序中展示二维数据。它是基于模型-视图-控制器(MVC)架构设计的,使得数据操作变得灵活且易于管理。本篇文章将深入探讨`JTable`如何操作单元格、行...

    JAVA表格控件JTable常用操作详解.doc

    除了以上的基本操作,JTable还支持其他高级特性,如监听单元格更改事件(`CellEditorListener`)、自定义单元格渲染(`TableCellRenderer`)和编辑器(`TableCellEditor`),以及表格选择和排序等。这些特性使得...

    Swing JTable工厂(table4j)

    1. **自定义渲染器和编辑器**:可能提供更灵活的单元格渲染和编辑机制,使得表格中的数据显示和编辑更加多样化。 2. **数据绑定**:可能支持与JavaBeans、POJO或其他数据模型的直接绑定,简化数据管理。 3. **性能...

    Java Swing中的表格(JTable)和树(JTree)组件使用实例

    - `JTable`是基于模型-视图-控制器(MVC)设计模式的,其中数据存储在`TableModel`中,`JTable`作为视图负责渲染数据。 - 用于展示结构化的数据,例如数据库中的记录或任何其他需要以行列形式展示的数据。 2. **...

    复杂JTable(复杂表头、跨行列表体)

    在Java Swing库中,`JTable`是一个非常重要的组件,用于展示二维数据集,通常用于创建用户界面中的表格。在一些复杂的应用场景中,我们可能需要实现更高级的功能,如复杂的表头和跨行列表体。这个主题主要关注如何...

    JTable添加CheckBox

    在Java Swing中,`JTable` 是用于展示二维数据的组件,它允许用户查看和编辑数据。本示例探讨如何在`JTable`中添加`CheckBox`,并实现表头的`JCheckBox`全选联动功能。这在需要用户进行多选操作的界面中非常常见,...

Global site tag (gtag.js) - Google Analytics