【发布时间】:2012-08-06 18:11:59
【问题描述】:
请看下面的代码
Main.Java
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame
{
private JButton ok;
public Main()
{
ok = new JButton("OK");
ok.addActionListener(new ButtonAction());
JPanel panel = new JPanel();
panel.setLayout(new FlowLayout());
panel.add(ok);
getContentPane().add(panel,"South");
this.setVisible(true);
this.setSize(new Dimension(200,200));
this.validate();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[]args)
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
new Main();
}
catch(Exception e)
{
}
}
private class ButtonAction implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
Dialog d = new Dialog();
d.setVisible(true);
}
}
}
Dialog.java
import java.awt.Event;
import java.awt.*;
import javax.swing.*;
public class Dialog extends JDialog
{
private JButton done;
public Dialog()
{
done = new JButton("Done");
this.add(done);
this.setSize(new Dimension(400,200));
}
}
在这里,我想将 Dialog 表单“附加”到主表单。这意味着,当我单击 Main.Java 中的 OK 按钮时,对话框表单将附加到主表单的右侧。所以,当我移动主窗体时,对话框也会移动。但是,对话框窗体应该是独立的,也就是说,当我在对话框窗体中单击“x”按钮时,只有那个窗体存在,而不是主窗体。
当单击按钮时,如何将此对话框表单附加到主表单的右侧?请帮忙!
【问题讨论】:
-
在 ButtonAction 的 actionPerformed 中,您应该将新创建的对话框的位置设置为您希望它连接到的主框架的一角。
-
我认为这不是答案。这是最简单的事情。如果用户移动窗口,对话框不会移动
-
这是一个开始。添加一个 WindowListener 来跟踪位置,并添加一个 ComponentListener 来跟踪大小。
-
强烈建议在EDT上调用Swing相关代码。使用
SwingUtilities.invokeLater(Runnable)执行此操作。 -
干得好。但是,如果您调整主框架的大小,它会起作用吗? ;)
标签: java swing user-interface jframe jdialog