JTable的使用 请问如何用JTable 实现鼠标单击表格并获取表格的值输出在界面文本框里? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重点参考代码中这一行的事件处理: table.getModel().addTableModelListener(new TableModelListener()import java.awt.BorderLayout;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.Window;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JTable;import javax.swing.JToolTip;import javax.swing.event.TableModelEvent;import javax.swing.event.TableModelListener;/** * 主窗口 */public class TestJTable extends JFrame { private JTable table = new JTable(20, 6) { // 自定义ToolTips public JToolTip createToolTip() { JToolTip tip = super.createToolTip(); tip.setLayout(new BorderLayout()); tip.add(new JButton("Hello"), BorderLayout.NORTH); tip.add(new JButton("Hello"), BorderLayout.SOUTH); tip.setPreferredSize(new Dimension(300, 200)); return tip; } }; public TestJTable() { this.setSize(800, 600); // 预置ToolTip table.setToolTipText(""); // 借助事件监听,实现单元格自动计算 6=4+5 table.getModel().addTableModelListener(new TableModelListener() { public void tableChanged(TableModelEvent e) { int col = e.getColumn(); int row = e.getFirstRow(); if (col == 3 || col == 4) { // 因为列数从0开始算,所以要减一 double v4 = 0; try { v4 = Double.valueOf(String.valueOf(table.getValueAt(row, 3))); } catch (NumberFormatException ex) { } double v5 = 0; try { v5 = Double.valueOf(String.valueOf(table.getValueAt(row, 4))); } catch (NumberFormatException ex) { } table.setValueAt(v4 + v5, row, 5); } } }); this.add(table, BorderLayout.CENTER); // 弹出新窗口,显示所选中行的数据 JButton btnNewFrame = new JButton("Popup new JFrame"); btnNewFrame.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { // 先获得所选中行的数据 Object[] data = getSelectedRowData(); // 构造弹出窗口,并将数据传递进去 PopupFrame frm = new PopupFrame(data); // 显示该窗口 frm.setVisible(true); } }); this.add(btnNewFrame, BorderLayout.SOUTH); } public Object[] getSelectedRowData() { int colummCount = table.getModel().getColumnCount();// 列数 Object[] objs = new Object[colummCount]; for (int i = 0; i < colummCount; i++) { objs[i] = table.getModel().getValueAt(table.getSelectedRow(), i); } return objs; } public static void main(String[] args) { TestJTable wnd = new TestJTable(); wnd.setDefaultCloseOperation(EXIT_ON_CLOSE); wnd.setVisible(true); }}/** * 弹出窗口 */class PopupFrame extends JFrame { public PopupFrame(Object[] data) { this.setSize(400, 300); this.setLayout(new FlowLayout()); // 借助JLabel,循环把数据都显示出来 for (int i = 0; i < data.length; i++) { JLabel lbl = new JLabel(String.valueOf(data[i])); this.add(lbl); } JButton btnTest = new JButton("CountWindowsNumber"); btnTest.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Window[] wnds = Window.getWindows(); for (Window wnd : wnds) { System.out.println(wnd.getName() + "\t" + wnd.getClass()); } } }); this.add(btnTest); }} table.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent event) { if (!event.getValueIsAdjusting()) { TableModel model = table.getModel(); int row = table.getSelectedRow(); int column = table.getSelectedColumn(); System.out.println(model.getValueAt(row, column)); } } }); 你是要让别给你做作业吧!都把最难的部分给你弄出来了,剩下的那一点都不会做?写个界面,然后在上面输出的部分用textArea.setText(..)都懒得动手吗! 进度条问题 如何用java实现web的数据挖掘,请大家进来给点意见。 谁有FTP啊 我有个东西放一下 急 那位大哥给我一个 怎么做!初学! 求一个线程安全的set JAVA打印服务中怎样让只打了一部分的打印纸走完? java虚拟机不同?(答者就给分) 如何让一个application可以用鼠标点击运行 谁能告诉我什么时候class要implements Serializable? 关于JAVA编程环境的调查(言者有分) 大家来参与下! 建立socket连接后不断开,过会发送数据怎样传入刚才的socket连接?
table.getModel().addTableModelListener(new TableModelListener()import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.JToolTip;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;/**
* 主窗口
*/
public class TestJTable extends JFrame { private JTable table = new JTable(20, 6) {
// 自定义ToolTips
public JToolTip createToolTip() {
JToolTip tip = super.createToolTip();
tip.setLayout(new BorderLayout());
tip.add(new JButton("Hello"), BorderLayout.NORTH);
tip.add(new JButton("Hello"), BorderLayout.SOUTH);
tip.setPreferredSize(new Dimension(300, 200));
return tip;
}
}; public TestJTable() {
this.setSize(800, 600); // 预置ToolTip
table.setToolTipText(""); // 借助事件监听,实现单元格自动计算 6=4+5
table.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
int col = e.getColumn();
int row = e.getFirstRow();
if (col == 3 || col == 4) { // 因为列数从0开始算,所以要减一
double v4 = 0;
try {
v4 = Double.valueOf(String.valueOf(table.getValueAt(row, 3)));
} catch (NumberFormatException ex) {
}
double v5 = 0;
try {
v5 = Double.valueOf(String.valueOf(table.getValueAt(row, 4)));
} catch (NumberFormatException ex) {
}
table.setValueAt(v4 + v5, row, 5);
}
}
});
this.add(table, BorderLayout.CENTER); // 弹出新窗口,显示所选中行的数据
JButton btnNewFrame = new JButton("Popup new JFrame");
btnNewFrame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// 先获得所选中行的数据
Object[] data = getSelectedRowData();
// 构造弹出窗口,并将数据传递进去
PopupFrame frm = new PopupFrame(data);
// 显示该窗口
frm.setVisible(true);
}
});
this.add(btnNewFrame, BorderLayout.SOUTH);
} public Object[] getSelectedRowData() {
int colummCount = table.getModel().getColumnCount();// 列数
Object[] objs = new Object[colummCount];
for (int i = 0; i < colummCount; i++) {
objs[i] = table.getModel().getValueAt(table.getSelectedRow(), i);
}
return objs;
} public static void main(String[] args) {
TestJTable wnd = new TestJTable();
wnd.setDefaultCloseOperation(EXIT_ON_CLOSE);
wnd.setVisible(true);
}}/**
* 弹出窗口
*/
class PopupFrame extends JFrame {
public PopupFrame(Object[] data) {
this.setSize(400, 300);
this.setLayout(new FlowLayout());
// 借助JLabel,循环把数据都显示出来
for (int i = 0; i < data.length; i++) {
JLabel lbl = new JLabel(String.valueOf(data[i]));
this.add(lbl);
}
JButton btnTest = new JButton("CountWindowsNumber");
btnTest.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Window[] wnds = Window.getWindows();
for (Window wnd : wnds) {
System.out.println(wnd.getName() + "\t" + wnd.getClass());
}
}
});
this.add(btnTest);
}
}
@Override
public void valueChanged(ListSelectionEvent event) {
if (!event.getValueIsAdjusting()) {
TableModel model = table.getModel();
int row = table.getSelectedRow();
int column = table.getSelectedColumn();
System.out.println(model.getValueAt(row, column));
}
}
});
都把最难的部分给你弄出来了,剩下的那一点都不会做?
写个界面,然后在上面输出的部分用textArea.setText(..)都懒得动手吗!