ablong 2009-04-14 09:54
浏览 164
已采纳

swing

[code="java"]package test;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.*;
import javax.swing.border.BevelBorder;
import javax.swing.table.*;

import print.UpCenterPanel;

public class TestTabel extends JFrame{

public static Vector<Vector> stuInfo = null ;
JScrollPane tablepanel = null;

public TestTabel(){
    this.setLayout(new FlowLayout());
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(400, 200);
    this.setResizable(false);
    this.setVisible(true);

    //设置顶层框架居中显示
    Toolkit kit = Toolkit.getDefaultToolkit();
    Dimension screenSize = kit.getScreenSize();
    int screenWidth = screenSize.width;
    int screenHeight = screenSize.height;
    int x = (screenWidth - WIDTH)/2;
    int y = (screenHeight - HEIGHT)/2;
    this.setLocation(x, y);

    //table
    stuInfo = new Vector<Vector>();

    //names
    Vector<String> names = new Vector<String>();
    names.addElement("学号");
    names.addElement("姓名");
    names.addElement("班级");
    names.addElement("学院");

    //col
    Vector<String> vec = new Vector<String>();
    vec.addElement("10712501");
    vec.addElement("傻瓜");
    vec.addElement("软件0701");
    vec.addElement("计算机系");
    stuInfo.add(vec);

    TableModel model = new DefaultTableModel(stuInfo,names);
    JTable table = new JTable(model);
    RowSorter sort = new TableRowSorter<TableModel>(model);
    table.setRowSorter(sort);
    table.setPreferredScrollableViewportSize(new Dimension(300,190));


    //添加表格的面板
    tablepanel = new JScrollPane(table);
    tablepanel.setBackground(Color.WHITE);
    tablepanel.setBorder(new BevelBorder(BevelBorder.LOWERED));

    this.add(tablepanel);

    JButton button = new JButton("press");
    this.add(button);
    button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){

            Vector<String> vec = new Vector<String>();
            vec.addElement("10712501");
            vec.addElement("傻瓜");
            vec.addElement("软件0701");
            vec.addElement("计算机系");
            stuInfo.add(vec);
        }
    });
}
  public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
          public void run() {
            try {
              UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
            }
            catch (Exception exception) {
              exception.printStackTrace();
            }
            TestTabel tt = new TestTabel();
            Vector<String> vec = new Vector<String>();
            vec.addElement("10712501");
            vec.addElement("傻瓜");
            vec.addElement("软件0701");
            vec.addElement("计算机系");
            stuInfo.add(vec);
          }
        });
      }

}
[/code]
这段代码为了测试是否可以在jtable上添加字段,在main函数中的代码
[code="java"] Vector vec = new Vector();
vec.addElement("10712501");
vec.addElement("傻瓜");
vec.addElement("软件0701");
vec.addElement("计算机系");
stuInfo.add(vec);
[/code]
但是为什么 button.addActionListener(new ActionListener(){
执行同样的代码就失败?

  • 写回答

3条回答 默认 最新

  • iteye_14762 2009-04-14 10:22
    关注

    你在添加给stuInfo一个新row之后,要触发一个event给TableModel:

    [color=red]final DefaultTableModel model = new DefaultTableModel(stuInfo,names); [/color]

    button.addActionListener(new ActionListener(){

    public void actionPerformed(ActionEvent e){

    Vector vec = new Vector();

    vec.addElement("10712501");

    vec.addElement("傻瓜");

    vec.addElement("软件0701");

    vec.addElement("计算机系");

    stuInfo.add(vec);

    model.fireTableDataChanged();

    }

    });

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 AT89C51控制8位八段数码管显示时钟。
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题