62,614
社区成员
发帖
与我相关
我的任务
分享
int colummCount = table.getModel().getColumnCount();// 列数
objs=new Object[colummCount];
for (int i = 0; i < colummCount; i++)
objs[i]=table.getModel().getValueAt(table.getSelectedRow(), i);
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
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);
}
}
}
public Object[] getobjs()
{
int colummCount = table.getModel().getColumnCount();// 列数
objs=new Object[colummCount];
for (int i = 0; i < colummCount; i++)
objs[i]=table.getModel().getValueAt(table.getSelectedRow(), i);
return objs;
}