怎样将Swing中的表格内的数据显示在文本框中

2024-12-14 04:15:41
推荐回答(3个)
回答1:

你的意思是要实现右击菜单那种是吧
那你就要加一个事件 点击表格某一行时 触发事件,获取这条记录要显示给文本框的记录 再给文本框赋值就可以了
/************************************************/
调用JTable的rowAtPoint方法 参见API:

public int rowAtPoint(Point point)返回 point 所在的行索引;如果结果不在 [0, getRowCount()-1] 范围内,则返回 -1。
参数:
point - 要查询的位置
返回:
point 所在的行索引;如果结果不在 [0, getRowCount()-1] 范围内,则返回 -1
另请参见:
columnAtPoint(java.awt.Point)

范例:
public void mousePressed(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
int selIndex = myTable.rowAtPoint(e.getPoint());



selIndex就是右键单击的行数 通过columnAtPoint也可以获得列数
行数和列数就能找到对应的单元格了

回答2:

类变量

JTextField txtResult = new JTextField();

.............
计算结果的过程
txtResult.setText(String.valueOf(result));

回答3:

public class TableDemo {

public static void main(String[] args) {
class Data {

String name = (Math.random() + "").substring(0, 3);

public String getDatFiled(int index) {
return name + index;
}
}
class Model extends AbstractTableModel {

private ArrayList list = new ArrayList();

public Model() {
list.add(new Data());
list.add(new Data());
list.add(new Data());
list.add(new Data());
list.add(new Data());
list.add(new Data());
}

public Data getData(int index) {
return list.get(index);
}

@Override
public int getRowCount() {
return list.size();
}

@Override
public int getColumnCount() {
return 3;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
return list.get(rowIndex).getDatFiled(columnIndex);
}
}
final JTable table = new JTable(new Model());
JPanel panel = new JPanel(new FlowLayout());
final JTextField text1 = new JTextField();
text1.setColumns(5);
final JTextField text2 = new JTextField();
text2.setColumns(5);
final JTextField text3 = new JTextField();
text3.setColumns(5);
panel.add(text1);
panel.add(text2);
panel.add(text3);
table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent e) {
Model model = (Model) table.getModel();
Data data = model.getData(table.getSelectedRow());
text1.setText(data.getDatFiled(0));
text2.setText(data.getDatFiled(1));
text3.setText(data.getDatFiled(2));
}
});
JFrame frame = new JFrame("Table Demo");
frame.setDefaultCloseOperation(3);
frame.setSize(500, 400);
frame.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
frame.getContentPane().add(panel, BorderLayout.SOUTH);
frame.setVisible(true);
}
}