怎样将Swing中的表格内的数据显示在文本框中
发布网友
发布时间:2022-11-09 08:12
我来回答
共3个回答
热心网友
时间:2023-11-17 16:06
你的意思是要实现右击菜单那种是吧
那你就要加一个事件 点击表格某一行时 触发事件,获取这条记录要显示给文本框的记录 再给文本框赋值就可以了
/************************************************/
调用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也可以获得列数
行数和列数就能找到对应的单元格了追问能否有一个小小的案例?
热心网友
时间:2023-11-17 16:06
类变量
JTextField txtResult = new JTextField();
.............
计算结果的过程
txtResult.setText(String.valueOf(result));
热心网友
时间:2023-11-17 16:07
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<Data> list = new ArrayList<Data>();
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);
}
}