jtable 熟悉的人进

jiajia9312 2008-04-18 08:30:49
一个JTable,初始显示为10行(是空行).现在想要把一条记录插入JTable中,并且满足:

1.每次插入的记录要放入JTable的顶端;

2.当插入的记录小于10条时,JTable的行数保持不变,记录超过10条时,JTable的行数才可以相应的增加.

大概需要怎么做呢?
...全文
104 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
IamHades 2008-04-19
  • 打赏
  • 举报
回复
另外做如下修改可以看到显著的效果:第一列显示的内容就是你操作的次数:

button.addActionListener(new ActionListener() {

private int count;

public void actionPerformed(ActionEvent e) {
model.insertRow(0, new Object[] {
++count,
"2",
"3" });
}

});
IamHades 2008-04-19
  • 打赏
  • 举报
回复
刚才那代码有问题,下面给个测试通过的代码:

/**
* JTableDemo.java
*
* Created at 2008-4-19 下午12:28:41
*/
package demo.jxl;

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

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
* @author icechen
*
*/
public class JTableDemo extends JPanel {
private DefaultTableModel model;

private JTable table;

public JTableDemo() {
super(new BorderLayout());
model = new DefaultTableModel(new Object[] {
"column1",
"column2",
"column3" }, 10) {

@Override
public void insertRow(int row, Vector rowData) {
super.insertRow(row, rowData);
Vector lastRowData = (Vector) dataVector.elementAt(dataVector.size() - 1);
if (lastRowData == null
|| lastRowData.elementAt(0) == null) {
removeRow(dataVector.size() - 1);
}

}
};
table = new JTable(model);

JButton button = new JButton("insert to first row");
button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
model.insertRow(0, new Object[] {
"1",
"2",
"3" });
}

});
add(button, BorderLayout.PAGE_START);
add(new JScrollPane(table), BorderLayout.CENTER);
}

private static void createAndShowGUI() {
JFrame frame = new JFrame("demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JTableDemo(), BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}

/**
* @param args
*/
public static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {
createAndShowGUI();
}

});
}

}
IamHades 2008-04-19
  • 打赏
  • 举报
回复
创建table:

DefaultTableModel model = new DefaultTableModel(new Object[] {
"column1",
"column2" }, 10) {

@Override
public int getRowCount() {
if (dataVector.size() <= 10) {
return 10;
} else {
return dataVector.size();
}
}

};
JTable table = new JTable(model);


插入新行到表格最开始:

model.insertRow(0, new Object[] {"1", "2"});
hmsuccess 2008-04-18
  • 打赏
  • 举报
回复
自己设计model
DefaultTableModel model = new DefaultTableModel(new java.lang.Object [][] {

},
new String [] {
"学号", "名字", "性别", "C 语言成绩", "Java成绩", "英语", "分布式成绩"
});
jTableContent.setModel(model);
jScrollPane1.setViewportView(jTableContent);

当插入的记录小于10条时,JTable的行数保持不变,记录超过10条时,JTable的行数才可以相应的增加.
这些你都可以在model中完成,model.addRow等方法
liuwenjun3001 2008-04-18
  • 打赏
  • 举报
回复
把数据做成类的属性,把该类的实例保存到 list 中 。然后再TableModel里面setValueAt(),行数随list.size()变化。

问题1.从list的最后一个往前读。

2.public int getRowCount() {
if(list.size()<=10){
return 10;
}else{return list.size();}
}

你试试。。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧