gpt4 book ai didi

java - 从模态 JDialog 打开时激活 JFrame

转载 作者:行者123 更新时间:2023-11-29 03:55:52 25 4
gpt4 key购买 nike

我需要从父 JFrame 启动一个 JDialog 并进入模态。从 JDialog 我需要查看另一个 JFrame(子框架)并访问它。但是一旦我们打开了模态对话框,我们就无法访问,所以是否有任何解决方法来访问从模态对话框打开的子框架。

这是代码片段。我需要访问从 j 模态对话框打开的 f1 框架。

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class TestDialog {

public static void main(String[] args) {

TestDialog t=new TestDialog();
t.show();

}

void show(){
JFrame f = new JFrame("Simple Frame");
JTextField tf = new JTextField("Text");
tf.setPreferredSize(new Dimension(200, 100));
JButton b=new JButton("click me");

f.getContentPane().setLayout(new BorderLayout());
f.getContentPane() .add(tf, BorderLayout.NORTH);
f.getContentPane() .add(b, BorderLayout.CENTER);
f.setBounds(500, 400, 500, 500);
f.setVisible(true);
f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);

final JDialog j=new JDialog();
j.setSize(200,300);
JPanel p=new JPanel();
JButton b1=new JButton("check me");
p.add(new JLabel("label me"));
p.add(b1);
j.getContentPane().add(p);
j.setDefaultCloseOperation(j.DISPOSE_ON_CLOSE);
j.setModal(true);
j.setLocationRelativeTo(f);

b.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
j.show(true);
}

});

final JFrame f1 = new JFrame("Sub Frame");
f1.getContentPane().setLayout(new BorderLayout());
f1.getContentPane() .add(new JLabel("label me"), BorderLayout.NORTH);
f1.setBounds(600, 500, 300, 300);
f1.setDefaultCloseOperation(f1.DISPOSE_ON_CLOSE);

b1.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e) {
f1.setVisible(true);
}

});
}
}

最佳答案

如果您有框架 f1 和 f2,并且对话框 d 是 f1 的父级,d 是 f2 的父级,您可以将 f2 设为对话框而不是框架吗?这将给出框架 f 和对话框 d1 和 d2,f 为 d1 的父级为 d2 的父级。

否则,您似乎在尝试使用与预期相反的 Swing 工具,因此重新审视设计似乎比试图将方钉强行插入圆孔更好。

关于java - 从模态 JDialog 打开时激活 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6447642/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com