菜单项,窗口

xjp6688 2006-06-17 04:06:09
在主窗口的菜单项上单击,出来一个子窗口,如果再次单击这个菜单项又会出来一个新的同样的子窗口。
问题就是怎样在单击菜单项的时候,只显示一个子窗口,不让他显示第2个同样的子窗口呢?
...全文
174 点赞 收藏 10
写回复
10 条回复
xjp6688 2006年06月19日
在问楼上一个问题就是能把能把窗口上的最小化,最大化,关闭等按扭变成灰色处理?
或者不让他们的某个显示呢?
回复 点赞
xjp6688 2006年06月19日
万分感谢五斗米
回复 点赞
mq612 2006年06月19日
替换下面这段代码:


jmi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Object oo=e.getSource();
if(oo.equals(jmi)){
if(t_2.getExtendedState() == 1) {
t_2.setExtendedState(0);
}
if(t_2.getExtendedState() == 7){
t_2.setExtendedState(6);
}
t_2.setVisible(true);
}
}
});
回复 点赞
mq612 2006年06月18日
在动作中不要出现new,那代表一个新的JFrame实例被初始化。
按照你的代码改了一下:

import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.*;

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuBar;

public class test extends JFrame {
private test2 t_2 = null;

public test(){
t_2 = new test2();
JFrame jf=new JFrame("主窗体");
JMenuBar jmb=new JMenuBar();
JMenu jm=new JMenu("文件");
final JMenuItem jmi=new JMenuItem("打开");
jm.add(jmi);
jmb.add(jm);
jf.getContentPane().add(jmb);
jf.setSize(500,500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jmi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Object oo=e.getSource();
if(oo.equals(jmi)){
t_2.setVisible(true);
}

}
});

}

public static void main(String[] args) {
new test();
}
}





import javax.swing.JFrame;

public class test2 extends JFrame{

public test2(){
super("2窗体");
this.setSize(300,300);
}

}
回复 点赞
xjp6688 2006年06月18日
多谢mq612(五斗米),万分感谢,还有一个小问题就是,如果窗口2现在最小化了,怎么在单击的时候让窗口显示出来或者最大化?
回复 点赞
xjp6688 2006年06月17日
test2中的窗口为第2个窗口
回复 点赞
xjp6688 2006年06月17日
楼上还是麻烦你在看看我的代码!

import java.awt.event.ActionEvent;
import javax.swing.*;
import java.awt.*;

import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenuBar;

public class test extends JFrame {
//private static final long serialVersionUID = -2865136880741559697L;

public test(){
JFrame jf=new JFrame("主窗体");
JMenuBar jmb=new JMenuBar();
JMenu jm=new JMenu("文件");
final JMenuItem jmi=new JMenuItem("打开");
jm.add(jmi);
jmb.add(jm);
jf.getContentPane().add(jmb);
jf.setSize(500,500);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jmi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Object oo=e.getSource();

if(oo.equals(jmi))
{new test2();
}

}});


};


public static void main(String[] args) {
new test();
}
}

----------
import javax.swing.JFrame;

public class test2 extends JFrame{
public test2(){
JFrame jf=new JFrame("2窗体");
jf.setSize(300,300);
jf.setVisible(true);
}
public static void main(String[] args) {
new test2();
}


}

-----
两个JAVA文件,在同一个包中,当单击窗口中的打开选项时显示test2中的窗口,那么再次单击的时候又出现同样的第2个窗口,现在问题就是怎么样让程序判断如果出现过窗口后,再次单击打开选项时就不出现第2个新窗口了,把原来第1次显示出来的窗口显示就可以了!
回复 点赞
xjp6688 2006年06月17日
多谢楼上
回复 点赞
mq612 2006年06月17日
不要在点击动作中出现new JFrame


import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class Test extends JFrame {
private static final long serialVersionUID = -2865136880741559697L;

private JButton button = null;

private JFrame frame = null;

public Test() {
frame = new JFrame("Window");
frame.setSize(200, 100);
button = new JButton("show window");
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
frame.setVisible(true);
}});
this.getContentPane().add(button);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(300, 200);
this.setVisible(true);
}

public static void main(String[] args) {
new Test();
}
}
回复 点赞
xjp6688 2006年06月17日
如果已经存在的子窗口最小化了的话,那么再次单击菜单项的时候让他显示出来即可!
回复 点赞
发动态
发帖子
Java SE
创建于2007-09-28

3.4w+

社区成员

30.7w+

社区内容

Java 2 Standard Edition
社区公告
暂无公告