菜单项,窗口

xjp6688 2006-06-17 04:06:09
在主窗口的菜单项上单击,出来一个子窗口,如果再次单击这个菜单项又会出来一个新的同样的子窗口。
问题就是怎样在单击菜单项的时候,只显示一个子窗口,不让他显示第2个同样的子窗口呢?
...全文
248 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
如果已经存在的子窗口最小化了的话,那么再次单击菜单项的时候让他显示出来即可!

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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