swing编程问题 定义变量记载btna点击次数,每次点击后用点击次数命名类b,并实例化,这样就可以调用每个实例关闭方法关闭自己! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 哪你要保证你保存有所有frameB实例的句柄,可以存在数组中,然后需要时执行批量操作不就可以啦? 关闭可用system.exit(0);就可以关闭全部窗口。你也可以对窗口添加适配器。给你个例子:addWindowListener (new WindowAdapter() {public void windowClosing(WindowEvent e) {mydialog.setVisible (false); } }); 在你的mydialog(从dialog派生)中加入以上代码,(适当修改) 谢谢各位解答,还有一些不明白的地方,希望能继续解答。to extract(苛刻)那我是不是要在classB之外才能调用classB的关闭method?我现在用的方式是在classB中加了一个WindowAdapter()。to javalearner()怎样才能得到每个instance的句柄(handle??)?你说的批量操作是用for语句实现么?这些句柄是不是也要在classB之外调用?to newman0708(春华)不能用System.exit(0)的。我现在只要frameB关闭,如果用System.exit(0)的话我的整个程序都退出了,frameA也会关闭的。你提到的例子我在frameB中已经有类似的annonymous inner class加载了。 这是我写的一个小程序是一个多点传送的程序跟你的意思很接近希望对你有帮助import java.awt.*;import java.awt.event.*;import javax.swing.*;public class CloseAll extends Frame implements ActionListener { public CloseAll() { super("title"); setSize(300, 200); addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ew) { System.exit(0); } }); JPanel p = new JPanel(); p.setLayout(new FlowLayout(FlowLayout.CENTER)); newButton = new JButton("new"); p.add(newButton); newButton.addActionListener(this); closeButton = new JButton("close"); p.add(closeButton); add(p, BorderLayout.NORTH); } public void actionPerformed(ActionEvent e) { NewFrame f = new NewFrame(); f.show(); closeButton.addActionListener(f); } public static void main(String args[]) { CloseAll c = new CloseAll(); c.show(); } private JButton closeButton; private JButton newButton;}class NewFrame extends JFrame implements ActionListener { public NewFrame() { int counter=1; setTitle("titile" + counter++); setSize(300, 200); setLocation(30 * counter, 30 * counter); } public void actionPerformed(ActionEvent e){ dispose(); }} disk(搂着猫睡觉的耗子) :谢谢你提供的例子。我现在的机子没有编译器,我先发回内部网的邮箱,明天再试一试。粗看了一下,觉得你程序里的int counter = 1;似乎应该放在public NewFrame() constructor method的外面,而且应该定义成static int counter = 0;(你后面用的是counter++不是++counter,是要从1开始计数的吧?)否则就没有计数器的作用了。(我猜想你的counter是为每一个NewFrame的title不一样而加的吧?) 补充一下前面:static int counter = 1;是我看走眼了。 在ClassB内部也可以呀,内部的方法作用于自己! 要学习更多的swing的编程,请访问我的技术专栏:http://www.csdn.net/Author/turbochen 求救!使处理事件的代码与创建GUI界面的代码分离,只用swing,非工具 CMPP问题,高手请进,急!急!急! 请问.的正则表达式怎样写? 帮帮忙大师们,关于对象容器类公用的问题 如何用程序创建一个utf-8格式的文本文件 java课后习题答案 20分请教一个小问题,关于解析String 大家帮个忙,关于JFileChooser的一个问题? java.net.URLEncoder.encode()使用的一个问题? 有关java更新数据库的问题 怎样把2进制转换为10进制!那么10进制怎样转换为2进制呢? 哪位来解释一下?
你也可以对窗口添加适配器。
给你个例子:
addWindowListener (new WindowAdapter()
{public void windowClosing(WindowEvent e)
{mydialog.setVisible (false);
}
});
在你的mydialog(从dialog派生)中加入以上代码,(适当修改)
那我是不是要在classB之外才能调用classB的关闭method?我现在用的方式是在classB中加了一个WindowAdapter()。to javalearner()
怎样才能得到每个instance的句柄(handle??)?你说的批量操作是用for语句实现么?这些句柄是不是也要在classB之外调用?to newman0708(春华)
不能用System.exit(0)的。我现在只要frameB关闭,如果用System.exit(0)的话我的整个程序都退出了,frameA也会关闭的。
你提到的例子我在frameB中已经有类似的annonymous inner class加载了。
希望对你有帮助
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class CloseAll extends Frame implements ActionListener {
public CloseAll() {
super("title");
setSize(300, 200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent ew) {
System.exit(0);
}
});
JPanel p = new JPanel();
p.setLayout(new FlowLayout(FlowLayout.CENTER));
newButton = new JButton("new");
p.add(newButton);
newButton.addActionListener(this);
closeButton = new JButton("close");
p.add(closeButton);
add(p, BorderLayout.NORTH); } public void actionPerformed(ActionEvent e) {
NewFrame f = new NewFrame();
f.show();
closeButton.addActionListener(f); } public static void main(String args[]) {
CloseAll c = new CloseAll();
c.show();
} private JButton closeButton;
private JButton newButton;
}class NewFrame extends JFrame implements ActionListener {
public NewFrame() {
int counter=1;
setTitle("titile" + counter++);
setSize(300, 200);
setLocation(30 * counter, 30 * counter); }
public void actionPerformed(ActionEvent e){
dispose();
}
}
谢谢你提供的例子。
我现在的机子没有编译器,我先发回内部网的邮箱,明天再试一试。粗看了一下,觉得你程序里的
int counter = 1;
似乎应该放在public NewFrame() constructor method的外面,而且应该定义成
static int counter = 0;(你后面用的是counter++不是++counter,是要从1开始计数的吧?)
否则就没有计数器的作用了。(我猜想你的counter是为每一个NewFrame的title不一样而加的吧?)
static int counter = 1;是我看走眼了。
http://www.csdn.net/Author/turbochen