【发布时间】:2014-08-23 14:59:23
【问题描述】:
我用 Swing 制作了一个扩展 Jframe 的 GUI,我的 jtable 中有 6 列。我读取数据 从文本文件中,在第 4 列和第 5 列中有值 100 和 200,所以我希望当用户在第 4 列中编辑并将 160 而不是 100 第 5 列自动更改为 140 或用户 第 5 列中的编辑说 280 而不是 200 第 4 列自动更改为 20。这是我的代码。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
public class Cs extends JFrame
{
private JTable table;
private DefaultTableModel model;
public Cs()
{
String aLine ;
Vector columnNames = new Vector();
Vector data = new Vector();
try
{
FileInputStream fin = new FileInputStream("cs.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
while( st1.hasMoreTokens() )
{
columnNames.addElement(st1.nextToken());
}
while ((aLine = br.readLine()) != null)
{
StringTokenizer st2 = new StringTokenizer(aLine, " ");
Vector row = new Vector();
while(st2.hasMoreTokens())
{
row.addElement(st2.nextToken());
}
data.addElement( row );
}
br.close();
}
catch (Exception e)
{
e.printStackTrace();
}
model = new DefaultTableModel(data, columnNames);
table = new JTable(model);
JScrollPane scrollPane = new JScrollPane( table );
getContentPane().add( scrollPane );
}
public static void main(String[] args)
{
Cs frame = new Cs();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.pack();
frame.setVisible(true);
}
}
【问题讨论】:
-
在您自定义的 TableModel 实现中实施此规则。每次
setValueAt()更改一列,也更改另一列。 docs.oracle.com/javase/tutorial/uiswing/components/… -
所以..去吧。我在这里没有看到任何问题。