java 怎么监听 另一个窗口按钮

已经有了PanelclassB并且添加了buttonB和FieldTextclassA建立Framea,b将buttonA和label添加到framea中点击button... 已经有了 Panel class B 并且添加了buttonB 和FieldText
class A 建立 Frame a,b 将 buttonA 和 label 添加到frame a 中
点击buttonA 打开Frame b 并且添加啊 panelB = new B()
问题是怎么设计 才能使 点击buttonB 关闭 Frame b 并且 使label显示fieldText的文字
因为要求 class B 做成 Panel 如果直接在Frame a 中插入 新panel要简单的多
好麻烦 举个例子吧 用java做的Email窗口 点击 联系人按钮 打开联系人窗口
输入新联系人 点击完成 关闭联系人窗口 同时 Email面板地址栏显示 输入的地址
大概是这个感觉
展开
 我来答
千锋教育
2016-01-04 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
  1. 在另一个类中,实现Get方法,或者将按钮设为public。

  2. 然后,在本类中实现监听接口,将另一个类中的按钮的监听接口设为本类

  3. 然后设置发送的ActionCommand

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ganhuanxp
2011-03-23 · TA获得超过363个赞
知道小有建树答主
回答量:259
采纳率:0%
帮助的人:266万
展开全部
在Frame b 设置一属性,如
private JTextField txt;
并使这个这个txt指向frame a中的TextField(通过构造函数或者setter)
然后你就可以引用了,在buttonB点击时,你对txt做什么处理都行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
青山鸟迹
2011-03-24
知道答主
回答量:37
采纳率:0%
帮助的人:0
展开全部
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ReadXML extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
private int frameWidth = 1200;
private int frameHeight = 600;
public ReadXML()
{
init();
Dimension scmSize = Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(scmSize.getWidth() / 2 - frameWidth / 2),
(int)scmSize.getHeight() / 2 - frameHeight / 2);
this.setSize(frameWidth, frameHeight);
this.setVisible(true);
}
private JButton data[] = new JButton[500];
private JButton N = null;
private JButton P = null;
private int num = 0;
private Container cp = null;
private Connection conn = null;
int iState = -1;
private void init()
{
this.setTitle("学员管理系统");

cp = this.getContentPane();
cp.setLayout(null);
for(int i = 0; i < 500; i ++)
{
data[i] = new JButton("物品"+i);
data[i].setBounds(50 + i % 10 * 110, 20 + (i % 100) / 10 * 35, 100, 30);
data[i].addActionListener(this);
}
N = new JButton("下一页");
N.setBounds(1080, 530, 100, 30);
N.addActionListener(this);

P = new JButton("上一页");
P.setBounds(20, 530, 100, 30);
P.addActionListener(this);
for(int i = 0; i < 100 ; i ++)
{
cp.add(data[i]);
}
cp.add(N);
cp.add(P);
this.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)
{
String actionName = e.getActionCommand();
if(actionName.equals("上一页"))
{
num--;
if(num < 0)
{
num = 4;
}
cp.removeAll();
for(int i = 0; i < 100; i ++)
{
cp.add(data[num * 100 + i]);
}
cp.add(N);
cp.add(P);
cp.repaint();
}
else if(actionName.equals("下一页"))
{
num++;
if(num == 5)
{
num = 0;
}
cp.removeAll();
for(int i = 0; i < 100; i ++)
{
cp.add(data[num * 100 + i]);
}
cp.add(N);
cp.add(P);
cp.repaint();
}
}
public static void main(String[] args)
{
ReadXML testDom = new ReadXML();
// testDom.printRootChild("h0.xml","h.bin");
}
}
里面有你想要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Eking2000
2011-03-23 · TA获得超过1228个赞
知道小有建树答主
回答量:1471
采纳率:0%
帮助的人:730万
展开全部
你的上面的意思我没懂,但是下面的貌似懂了一点点,既然是这样,你和不将在调用B的类(frame类)中添加B.buttonB.addActionListener(new ActionListener(){ 当前类中email面板地址栏.setText(b.Field.getText()) ;b.setVisible(false); });这样呢?

不知说道点子上了没有
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7893292
2011-03-23 · TA获得超过844个赞
知道小有建树答主
回答量:1088
采纳率:83%
帮助的人:687万
展开全部
看你的这个结构第一感觉有点晕.

但不管怎样,你只需通过参数传递,把 按钮对象做为一个参数在两个类之间互相传递,就OK了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式