java中JTable的一些用法

minesnow17 2012-02-24 10:20:59
我用JTable建了一张表,我希望在我点每一行记录的时候,可以把当前我选的这一行的所有记录传输到我的主界面里面去,怎么弄?就是说我有一个主界面,里面有些按键,当我按下表格这个键时会弹出表格窗口,里面就是一张表格,我现在希望我点表格里面的一行记录时,可以把这个记录传到我的主界面窗体里面去,应该怎么弄呀?或者是加鼠标响应吗???
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zglin689 2012-02-25
  • 打赏
  • 举报
回复
把记录从子窗口传到主界面窗体里面去,,你可以看看下面样能否合你意思
父窗口:
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);
}

}
子窗口:

import java.awt.BorderLayout;
import java.awt.Container;
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 T extends JFrame{

JTextArea text;
JPanel panel_t0, panel_t1, panel_t2;
JLabel tlabel;
JButton b1;
Test tp = new Test();

public T(){
setTitle("T");
setBounds(600, 100, 300, 300);
Container c = getContentPane();
c.setLayout(new BorderLayout());
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

text = new JTextArea(20,20);
panel_t0 = new JPanel();
panel_t1 = new JPanel();
panel_t2 = new JPanel();
tlabel = new JLabel("请输入数据:");

b1 = new JButton("确定");
panel_t0.add(tlabel);
panel_t1.add(text);
panel_t2.add(b1);
c.add(panel_t0, BorderLayout.NORTH);
c.add(panel_t1, BorderLayout.CENTER);
c.add(panel_t2, BorderLayout.SOUTH);
//-----------------------------------------------------------------------------
b1.addActionListener(new ActionListener(){ //加载button1按钮的事件
public void actionPerformed(ActionEvent e){
String textArea = text.getText();
tp.setRt(textArea); //将输入的数据返回父体
System.out.println(tp.getRt()); //在后台打印数据
}
});
}
}
minesnow17 2012-02-24
  • 打赏
  • 举报
回复
就是说,只需要加一个鼠标响应就可以了?也就是说是通过鼠标响应得到当前行的信息,然后我再把这个信息传给我的主界面类里面,是吧?并不是有什么可以把消息从一个窗体传到另一个窗体的方法,或者是类,是吧?
Neetgo 2012-02-24
  • 打赏
  • 举报
回复
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());
}
。。。。。还有别的代码。。。

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧