java图形界面设计问题??

SelfMedicated 2011-05-14 06:29:50
请问大家是如何解决这样一个问题的:

我在Frame1窗口中点了一个按钮,弹出Frame2,而Frame2必须是在Frame1前面的,就是说Frame2没有关闭,用户是不能操作Frame1的,然后继续点击Frame2中的一个按钮,弹出Frame3,我希望Frame3是覆盖Frame1和Frame2的,Frame3没有关闭,用户是不能操作Frame1和Frame2的,而当我关闭Frame3后,我希望Frame2还是覆盖Frame1的。

请问这个要怎么实现,我继续想想,希望大家帮我出出主意,谢谢了!!!
...全文
262 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaolongbob 2011-05-15
  • 打赏
  • 举报
回复
我知道了,把frame2也用JDialog来做就好了,不要用JFrame.
SelfMedicated 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangxiaolongbob 的回复:]
引用 1 楼 huntor 的回复:
弹出模态JDialog就可以了。

嗯,谢谢,可是我又遇到了一个问题,我在Frame3中设置了一个取消按钮,点击“取消”程序不退出,但是frame3要消失并且是释放资源的那种,但我用了dialog.dispose()后,点击取消按钮居然没有反应。我不知道为什么,我的代码是这样的。

下面的代码是要通过别的窗口调用的,它自己没有主方法。


Ja……
[/Quote]
问题补充,我进行了一下操作才出现这问题的:
我建了frame1.frame2,dialog。frame2我设置成了窗口在最前面就像下面的这段代码:
code=Java]frame2.addWindowFocusListener(new WindowFocusListener(){
public void windowGainedFocus(WindowEvent e) {
}
public void windowLostFocus(WindowEvent e) {
e.getWindow().toFront();
}

});[[/code]
然后dialog是绑定frame2的,这样操作就使得我最后弹出的dialog对话框无法关闭,但是如果没有frame1,dialog是工作正常的。不过想想我这样操作也是不合理的,frame2既是最前面的,但dialog又是在frame2前面的,这就矛盾了,我还得再想想!
SelfMedicated 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 huntor 的回复:]
弹出模态JDialog就可以了。
[/Quote]
嗯,谢谢,可是我又遇到了一个问题,我在Frame3中设置了一个取消按钮,点击“取消”程序不退出,但是frame3要消失并且是释放资源的那种,但我用了dialog.dispose()后,点击取消按钮居然没有反应。我不知道为什么,我的代码是这样的。

下面的代码是要通过别的窗口调用的,它自己没有主方法。


import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JComponent;

import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;


public class window2 extends JDialog {

private final JPanel panel = new JPanel();
private final JPanel panel_1 = new JPanel();
private final JLabel label = new JLabel();
private final JButton button = new JButton();
/**
* Launch the application
* @param args
*/
private JDialog dialog=null;

public void setJDialog(JDialog dilog){
this.dialog=dialog;
}

/**
* Create the dialog
* @param b
* @param frame
* @param b
* @param frame
* @param string
*/
public window2(JFrame frame, boolean b, String string) {
super(frame,string,b);
setBounds(100, 100, 266, 160);
this.setLocation(200,200);
try {
jbInit();
} catch (Throwable e) {
e.printStackTrace();
}
//
}
private void jbInit() throws Exception {
getContentPane().setLayout(new GridLayout(2, 0));

getContentPane().add(panel_1);

getContentPane().add(panel);

label.setText("窗口2");
final GroupLayout groupLayout_1 = new GroupLayout((JComponent) panel_1);
groupLayout_1.setHorizontalGroup(
groupLayout_1.createParallelGroup(GroupLayout.LEADING)
.add(groupLayout_1.createSequentialGroup()
.add(108, 108, 108)
.add(label)
.addContainerGap(109, Short.MAX_VALUE))
);
groupLayout_1.setVerticalGroup(
groupLayout_1.createParallelGroup(GroupLayout.LEADING)
.add(groupLayout_1.createSequentialGroup()
.addContainerGap()
.add(label)
.addContainerGap(31, Short.MAX_VALUE))
);
panel_1.setLayout(groupLayout_1);

button.setText("确定");
button.addActionListener(new ButtonActionListener());
final GroupLayout groupLayout = new GroupLayout((JComponent) panel);
groupLayout.setHorizontalGroup(
groupLayout.createParallelGroup(GroupLayout.TRAILING)
.add(groupLayout.createSequentialGroup()
.addContainerGap(98, Short.MAX_VALUE)
.add(button)
.add(92, 92, 92))
);
groupLayout.setVerticalGroup(
groupLayout.createParallelGroup(GroupLayout.TRAILING)
.add(groupLayout.createSequentialGroup()
.addContainerGap(21, Short.MAX_VALUE)
.add(button)
.addContainerGap())
);
panel.setLayout(groupLayout);
}
private class ButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
button_actionPerformed(e);
}
}
protected void button_actionPerformed(ActionEvent e) {////////////////
this.dialog.setVisible(false);//这一句加不加,效果都一样,点击取消都无法关闭
this.dialog.dispose();
}//////////////////////////////////////

}
star95hmz 2011-05-14
  • 打赏
  • 举报
回复
模式对话框
huntor 2011-05-14
  • 打赏
  • 举报
回复
弹出模态JDialog就可以了。

51,408

社区成员

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

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