日期:2014-05-20  浏览次数:20686 次

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());
}
。。。。。还有别的代码。。。

------解决方案--------------------
把记录从子窗口传到主界面窗体里面去,,你可以看看下面样能否合你意思
父窗口:
Java code
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);
    }
    
}
子窗口: