中易网

java帮忙看下代码?想弄出来JTabel表格但没反应。。。

答案:1  悬赏:0  
解决时间 2021-01-10 05:30
java帮忙看下代码?想弄出来JTabel表格但没反应。。。
最佳答案
给你一个例子,这个例子研究透了,那个JTable就没问题了!
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;
import javax.swing.DefaultCellEditor;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableColumnModel;

public class Test {
    private JFrame frame = null;
    private JTable table = null;
    private Table_Model model = null;
    private JScrollPane s_pan = null;
    private JButton button_1 = null, button_2 = null, button_3 = null;
    private JPanel pane = null;
    public Test() {
        frame = new JFrame("JTableTest");
        pane = new JPanel();
        button_1 = new JButton("清除数据");
        button_1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                removeData();
            }
        });
        button_2 = new JButton("添加数据");
        button_2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                addData();
            }
        });
        button_3 = new JButton("保存数据");
        button_3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                saveData();
            }
        });
        pane.add(button_1);
        pane.add(button_2);
        pane.add(button_3);
        model = new Table_Model(20);
        table = new JTable(model);
        table.setBackground(Color.white);
        String[] age = { "16", "17", "18", "19", "20", "21", "22" };
        JComboBox com = new JComboBox(age);
        TableColumnModel tcm = table.getColumnModel();
        tcm.getColumn(3).setCellEditor(new DefaultCellEditor(com));
        tcm.getColumn(0).setPreferredWidth(50);
        tcm.getColumn(1).setPreferredWidth(100);
        tcm.getColumn(2).setPreferredWidth(50);
        s_pan = new JScrollPane(table);
        frame.getContentPane().add(s_pan, BorderLayout.CENTER);
        frame.getContentPane().add(pane, BorderLayout.NORTH);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 200);
        frame.setVisible(true);
    }
    private void addData() {
        model.addRow("李逵", true, "19");
        table.updateUI();
    }
    private void removeData() {
        model.removeRows(0, model.getRowCount());
        table.updateUI();
    }
    // 保存数据,暂时是将数据从控制台显示出来
    private void saveData() {
        int col = model.getColumnCount();
        int row = model.getRowCount();
        for (int i = 0; i < col; i++) {
            System.out.print(model.getColumnName(i) + " ");
        }
        System.out.print("
");
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                System.out.print(model.getValueAt(i, j) + " ");
            }
            System.out.print("
");
        }
        System.out.println("------------------------------------");
    }
    public static void main(String args[]) {
        new Test();
        System.out
                .println(
"按下保存按钮将会把JTable中的内容显示出来
------------------------------------");
    }
}

class Table_Model extends AbstractTableModel {
    private static final long serialVersionUID = -7495940408592595397L;
    private Vector content = null;
    private String[] title_name = { "ID", "姓名", "性别", "年龄" };
    public Table_Model() {
        content = new Vector();
    }
    public Table_Model(int count) {
        content = new Vector(count);
    }
    public void addRow(String name, boolean sex, String age) {
        Vector v = new Vector(4);
        v.add(0, new Integer(content.size()));
        v.add(1, name);
        v.add(2, new Boolean(sex));
        v.add(3, age);
        content.add(v);
    }
    public void removeRow(int row) {
        content.remove(row);
    }
    public void removeRows(int row, int count) {
        for (int i = 0; i < count; i++) {
            if (content.size() > row) {
                content.remove(row);
            }
        }
    }
    
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        if (columnIndex == 0) {
            return false;
        }
        return true;
    }
    
    public void setValueAt(Object value, int row, int col) {
        ((Vector) content.get(row)).remove(col);
        ((Vector) content.get(row)).add(col, value);
        this.fireTableCellUpdated(row, col);
    }
    public String getColumnName(int col) {
        return title_name[col];
    }
    public int getColumnCount() {
        return title_name.length;
    }
    public int getRowCount() {
        return content.size();
    }
    public Object getValueAt(int row, int col) {
        return ((Vector) content.get(row)).get(col);
    }
    
    public Class getColumnClass(int col) {
        return getValueAt(0, col).getClass();
    }
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我终于知道我为什么没人疼了长的不够漂亮不会
怎样和不同性格的人和谐相处
研究生480分被刷下来的概率,就是大大超过分数
法院强制执行裁定书需要先送达才能执行吗?
2018昆明哪里理发好
盗墓修神小说txt全集免费下载
长春康诗丹郡啥时交房。买房三年没交房
揭阳供电局(揭阳市智屏通讯邮政便民点)地址好
减一磅脂肪到底需要消耗多少能量?每日减去15
求《申肖克的救赎》的影评,急用!
碳14是什么意思
化石的形成和保存条件
dota2丛林肉搏智力英雄怎么玩
高高高高数
如何清洗银耳钉?
推荐资讯
销售额14万,销售成本11.2万,请问毛利和毛利
win7怎么增加物理内存
吃了海带能喝红糖呢
求一些芭蕾舞方面的书籍
求最终幻想 蒂法 尤菲 雷霆 尤娜 塞拉 的同人
学前完整教育观和整合教育观的区别和联系
【Auto CAD】 求内外螺纹的LISP 程序包
索尼音响关不了机怎么办
西塘世博客栈地址有知道的么?有点事想过去
最近手头紧找个平台贷款5000帮忙下谢谢
口加一笔有哪些字
诗经里《绿衣》的全句,还有意思。
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?