java中JTable的一些用法
我用JTable建了一张表,我希望在我点每一行记录的时候,可以把当前我选的这一行的所有记录传输到我的主界面里面去,怎么弄?就是说我有一个主界面,里面有些按键,当我按下表格这个键时会弹出表格窗口,里面就是一张表格,我现在希望我点表格里面的一行记录时,可以把这个记录传到我的主界面窗体里面去,应该怎么弄呀?或者是加鼠标响应吗???
[解决办法]
JTable加一个鼠标监听事件,单击行的时候,获取该行信息,然后加写到主页面。如:
定义表格,加监听:
JTable mb = new JTable(3,5);
mb.addMouseListener(new KK());
定义监听器
class KK implements MouseListener{
public void mouseClicked(MouseEvent e) {
//获取选中的行号,当然也可以获取到该行的信息
System.out.println(((JTable)e.getSource()).getSelectedRow());
}
。。。。。还有别的代码。。。
[解决办法]
把记录从子窗口传到主界面窗体里面去,,你可以看看下面样能否合你意思
父窗口:
import java.awt.BorderLayout;import java.awt.Container;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.JPanel;import javax.swing.JTextArea;public class Test extends JFrame{ JPanel panel_1, panel_2; JButton button1, button2; JLabel label; JTextArea te; String a = "in button_1_1_1"; String b = "in button_2_2_2"; static String returnText; //定义接收子窗口返回的数据为静态类型 public Test(){ setTitle("test"); setBounds(200, 100, 500, 500); Container c = getContentPane(); c.setLayout(new BorderLayout()); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); button1 = new JButton("显示子窗口返回的数据"); button2 = new JButton("打开子窗口"); te = new JTextArea(20,20); label = new JLabel(); panel_1 = new JPanel(); panel_1.setLayout(new FlowLayout(FlowLayout.CENTER, 100, 10)); //设置panel_1的网格 panel_2 = new JPanel(); panel_1.add(button1); panel_1.add(button2); panel_2.add(label); c.add(panel_1, BorderLayout.NORTH); c.add(panel_2, BorderLayout.CENTER); //------------------------------------- button1.addActionListener(new ActionListener(){ //加载button1按钮的事件 public void actionPerformed(ActionEvent e){ label.setText(getRt()); //--在窗体上显示子窗口返回的数据 } }); button2.addActionListener(new ActionListener(){ //加载button2按钮的事件 public void actionPerformed(ActionEvent e){ T frame2 = new T(); frame2.setVisible(true); //打开子窗口 } }); } public String getRt() { //get方法 return returnText; } public void setRt(String rt) { //set方法 this.returnText = rt; } public static void main(String []args){ Test frame = new Test(); frame.setVisible(true); } }子窗口: