javajtabel的简单介绍

博主:adminadmin 2023-01-18 03:00:12 385

今天给各位分享javajtabel的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

Java中如何用数组设置JTable表格的列名与列宽

1.在项目中创建窗体类ArrayCreateTable。在窗体中添加一个滚动面板。

2.编写getTable()方法来创建表格,在该方法中声明字符串数组columns作为表格的列名,再声明int类型的数组来定义每个表格列的宽度。然后创建表格的数据模型并遍历所有表格列对象,根据int类型数组的索引来设置表格列的宽度。

代码如下:

private JTable getTable() {

if (table == null) {

table = new JTable();

// 定义列名数组

String[] columns = { "星期一", "星期二", "星期三", "星期四", "星期五", "星期六",

"星期日" };

// 定义列宽数组

int[] columnWidth = { 10, 20, 30, 40, 50, 60, 70 };

// 创建表格数据模型

DefaultTableModel model = new DefaultTableModel(columns, 15);

table.setModel(model);// 设置表格数据模型

TableColumnModel columnModel = table.getColumnModel();// 获取列模型

int count = columnModel.getColumnCount();// 获取列数量

for (int i = 0; i count; i++) {// 遍历列

TableColumn column = columnModel.getColumn(i);// 获取列对象

column.setPreferredWidth(columnWidth[i]);// 以数组元素设置列的宽度

}

}

return table;

}

java 怎么对jTable表格赋值

有两个方法。

1、自定义渲染器,自己添加。(或是用JDK已有的渲染器也可以)

2、重写TableModel的getColumnClass

参考实例如下:

public class Test {

public static void main(String[] args) {

String[][] cells = new String[6][7];

String add = "1";//已经存在的变量

int addValue = Integer.parseInt(add);//需要定义的中间变量

for (int rowIndex = 0; rowIndex = 5; rowIndex++) {

for (int columnIndex = 0; columnIndex = 6; columnIndex++) {

cells[rowIndex][columnIndex] = String.valueOf(addValue++) ;//赋值过程

System.out.print(cells[rowIndex][columnIndex]+",");

}

System.out.println("");

}

}

JAVA如何实现jtable 表头实现类似Excel筛选功能

用java的JTable实现类似Excel的报表控件主要需要完成的工作如下:

1. 单元格合并与拆分。

2. 基于JTextArea的渲染器,用来实现多行输入。

3. 由于采用JTextArea作为渲染器,导致文本只能向左对齐,后来通过重载JTextArea得以实现居中,居右,字体下划线等效果:)。

4. 鼠标动态拉行高,拉行宽。

5. 发现行数一多,导致性能下降很历害,所以实现了只刷新当前可视屏幕区域。

6. 单元格属性的设定:背景颜色、前景颜色、字体(大小,粗斜体,下划线,删除线)、对角线单元格(中国式报表)、边框线等

7. 打印预览

8. 打印

9. 自己实现的打印设置对话框(打印水印、打印方向、纸张页边距、打印纸张页数范围、打印顺序、设定打印的页眉和页脚、放大打印或缩小打印)

10.往单元格加载图片,可预览和打印出来

11.套打模式,在table显示标尺,并重置行高为1cm,行宽为2cm,以方便使用者对应套打纸张

12.为单元格绘制边线

13.查找和替换

14.增加行和列,删除行和列

15.格式刷

16.排序,升和降。可设定优先排序的形式,数值优先或着是中文优先,中文按照拼音排序

17.考贝,复制和贴粘

18.插入图表,目前只实现了柱状图表

19.求和

20.各种热键组合

21.显示和隐藏table网格线

Java实现jtable 表头实现类似Excel筛选功能,你可以采取以上步骤进行总结,希望你早日得到答案。

java JTable中如何添加一行数据?

可以使用Swing的DefaultTableModel类。\x0d\x0aDefaultTableModel model = new DefaultTableModel(); // 新建一个默认数据模型\x0d\x0aJTablt table = new JTable(model); // 用数据模型创建JTable,JTable会自动监听到数据模型中的数据改变并显示出来\x0d\x0aJScrollPane jsp = new JScrollPane(table); // 用列表创建可滚动的Panel,把这个Panel添加到窗口中\x0d\x0aVector row = new Vector(); // 数据行向量,使用它的add()添加元素,比如整数、String、Object等,有几行就new几个行向量\x0d\x0aVector data = new Vector(); // 数据行向量集,因为列表不止一行,往里面添加数据行向量,添加方法add(row)\x0d\x0aVector names = new Vector();// 列名向量,使用它的add()方法添加列名\x0d\x0amodel.setDataVector(Vector data, Vector names); // 设置模型中的元素,它会自动显示在列表中

java Jtable 如何动态添加button按钮

有时候我们需要在JTable中嵌入JButton,使得点击某个JTable单元格时,用户感觉通过JButton触发了响应事件。下面我们看看为JTable单元格添加按钮效果和响应事件的方法。以下示例实现的效果为:点击jtable中的button,button上的数字自动加1,并将加1后得到的数字正确显示在button上。

一、添加按钮显示效果

JTable中,单元格的数据显示默认是JTable的效果。如果我们想要按钮显示的效果的话,需要实现swing接口:javax.swing.table.TableCellRenderer,来改变单元格默认的渲染方法。

package TableButton;

import java.awt.BorderLayout;

import java.awt.Component;

import javax.swing.JButton;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.table.TableCellRenderer;

public class MyButtonRenderer implements TableCellRenderer {

    private JPanel panel;

    private JButton button;

    

    private int num;

    public MyButtonRenderer() {

        initButton();

        initPanel();

        panel.add(button, BorderLayout.CENTER);

    }

    private void initButton() {

        button = new JButton();

    }

    private void initPanel() {

        panel = new JPanel();

        panel.setLayout(new BorderLayout());

    }

    public Component getTableCellRendererComponent(JTable table, Object value,

            boolean isSelected, boolean hasFocus, int row, int column) {

        num = (Integer) value;

        

        button.setText(value == null ? "" : String.valueOf(value));

        return panel;

    }

}

二、添加按钮响应事件

第1步中我们为表格添加了渲染器,但是渲染器只负责显示效果,要想点击”按钮“之后有响应,还得跟单元格的编辑器有关。点击表格是会触发表格的编辑时间,所以我们按钮的响应事件可以写在编辑器中,我们需要修改表格的默认编辑器实现。

swing中有个类javax.swing.DefaultCellEditor提供对单元格内插入JTextField/JComboBox/JCheckbox这3种控件,但是不提供对JButton的支持(1.7里不支持,不代表以后不会支持),所以我们得用到另外一个类自己写TableCellEditor,这个类是avax.swing.AbstractCellEditor。

package TableButton;

import java.awt.BorderLayout;

import java.awt.Component;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.AbstractCellEditor;

import javax.swing.JButton;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JTable;

import javax.swing.table.TableCellEditor;

public class MyButtonEditor extends AbstractCellEditor implements

        TableCellEditor {

    /**

     * serialVersionUID

     */

    private static final long serialVersionUID = -6546334664166791132L;

    private JPanel panel;

    private JButton button;

    private int num;

    public MyButtonEditor() {

        initButton();

        initPanel();

        panel.add(this.button, BorderLayout.CENTER);

    }

    private void initButton() {

        button = new JButton();

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                int res = JOptionPane.showConfirmDialog(null,

                        "Do you want to add 1 to it?", "choose one",

                        JOptionPane.YES_NO_OPTION);

                

                if(res ==  JOptionPane.YES_OPTION){

                    num++;

                }

                //stopped!!!!

                fireEditingStopped();

            }

        });

    }

    private void initPanel() {

        panel = new JPanel();

        panel.setLayout(new BorderLayout());

    }

    @Override

    public Component getTableCellEditorComponent(JTable table, Object value,

            boolean isSelected, int row, int column) {

        num = (Integer) value;

        

        button.setText(value == null ? "" : String.valueOf(value));

        return panel;

    }

    @Override

    public Object getCellEditorValue() {

        return num;

    }

}

需要注意的是得重写TableModel的isCellEditable方法,因为只有为重写Editor的列开启了可编辑功能,单元格才能被编辑,也就才能出发按钮单击事件。在下一段代码中有体现。

另外要注意得禁止掉JTable的行选中功能。否则我们再点击按钮时,JTable不知道是响应为”行选中“还是”按钮单击事件“。

三、测试代码

package TableButton;

import java.awt.Color;

import java.awt.EventQueue;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

public class TestTable {

    private JFrame frame;

    private JTable table;

    

    private Object[][] data = {

            {1, 2, 3},

            {4, 5, 6},

            {7, 8, 9}};

    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {

            public void run() {

                try {

                    TestTable window = new TestTable();

                    window.frame.setVisible(true);

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        });

    }

    public TestTable() {

        frame = new JFrame();

        frame.setBounds(100, 100, 450, 300);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.getContentPane().setLayout(null);

        JPanel panel = new JPanel();

        panel.setBounds(10, 10, 414, 242);

        frame.getContentPane().add(panel);

        panel.setLayout(null);

        JScrollPane scrollPane = new JScrollPane();

        scrollPane.setBounds(10, 10, 394, 222);

        panel.add(scrollPane);

        table = new JTable();

        scrollPane.setViewportView(table);

        table.setModel(new DefaultTableModel() {

            @Override

            public Object getValueAt(int row, int column) {

                return data[row][column];

            }

            @Override

            public int getRowCount() {

                return 3;

            }

            @Override

            public int getColumnCount() {

                return 3;

            }

            @Override

            public void setValueAt(Object aValue, int row, int column){

                data[row][column] = aValue;

                fireTableCellUpdated(row, column);

            }

            

            @Override

            public boolean isCellEditable(int row, int column) {

                if (column == 2) {

                    return true;

                } else {

                    return false;

                }

            }

        });

        table.getColumnModel().getColumn(2).setCellEditor(

                new MyButtonEditor());

        table.getColumnModel().getColumn(2).setCellRenderer(

                new MyButtonRenderer());

        table.setRowSelectionAllowed(false);

    }

}

JAVA 中 JTable 如何 删除或重写

给你代码,一秒钟更新一次。

import java.awt.BorderLayout;

import java.util.Random;

import javax.swing.JFrame;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.table.DefaultTableModel;

public class Test extends JFrame implements Runnable {

private DefaultTableModel model = new DefaultTableModel(

new String[] { "number" }, 0);

public Test() {

JTable table = new JTable(model);

JScrollPane pane = new JScrollPane(table);

add(pane, BorderLayout.CENTER);

setSize(800, 600);

setLocationRelativeTo(null);

setDefaultCloseOperation(EXIT_ON_CLOSE);

setVisible(true);

new Thread(this).start();

}

public static void main(String[] args) {

new Test();

}

public void run() {

Random random = new Random();

while (true) {

while (model.getRowCount()  0) {

model.removeRow(0);

}

int r = random.nextInt(20);

for (int i = 0; i  r; i++) {

model.addRow(new String[] { random() });

}

try {

repaint();

Thread.sleep(1000);

} catch (Exception e) {

}

}

}

private String random() {

String str = "QWERTYUIOPASDFGHJKLZXCVBNM";

Random random = new Random();

StringBuffer buff = new StringBuffer();

for (int i = 0; i  8; i++) {

int index = random.nextInt(str.length());

buff.append(str.substring(index, index + 1));

}

return buff.toString();

}

}

关于javajtabel和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。