我从表格里得到当前行的所有列值,请问现在如何将他传递到新打开的JFRAME里 int colummCount = table.getModel().getColumnCount();// 列数
objs=new Object[colummCount];
for (int i = 0; i < colummCount; i++)
objs[i]=table.getModel().getValueAt(table.getSelectedRow(), i);
新的窗口是inpt();new inpt().setVisible(true);
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;
}
我写了这个,不过不能用的
JButton btnNewFrame = new JButton("Popup new JFrame");
之后的相关内容。
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);
}
}}