答案 1
我认为LayeredPane是你最好的选择。您需要第三个面板来包含A和B。第三个面板将是分层窗格,然后面板A和B仍然可以有一个不错的布局管理器。你所要做的就是在A上以B为中心,在Swing小径上有很多关于如何做到这一点的例子。不使用布局管理器进行定位的教程。
public class Main {
private JFrame frame = new JFrame();
private JLayeredPane lpane = new JLayeredPane();
private JPanel panelBlue = new JPanel();
private JPanel panelGreen = new JPanel();
public Main()
{
frame.setPreferredSize(new Dimension(600, 400));
frame.setLayout(new BorderLayout());
frame.add(lpane, BorderLayout.CENTER);
lpane.setBounds(0, 0, 600, 400);
panelBlue.setBackground(Color.BLUE);
panelBlue.setBounds(0, 0, 600, 400);
panelBlue.setOpaque(true);
panelGreen.setBackground(Color.GREEN);
panelGreen.setBounds(200, 100, 100, 100);
panelGreen.setOpaque(true);
lpane.add(panelBlue, new Integer(0), 0);
lpane.add(panelGreen, new Integer(1), 0);
frame.pack();
frame.setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Main();
}
}
您可以使用 setBounds 将面板放置在分层窗格内,还可以设置其大小。
编辑以反映对原始帖子的更改您需要添加组件侦听器,用于检测父容器何时调整大小,然后动态更改面板 A 和 B 的边界。
答案 2
您可以添加一个未装饰的 JDialog,如下所示:
import java.awt.event.*;
import javax.swing.*;
public class TestSwing {
public static void main(String[] args) throws Exception {
JFrame frame = new JFrame("Parent");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800, 600);
frame.setVisible(true);
final JDialog dialog = new JDialog(frame, "Child", true);
dialog.setSize(300, 200);
dialog.setLocationRelativeTo(frame);
JButton button = new JButton("Button");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
dialog.add(button);
dialog.setUndecorated(true);
dialog.setVisible(true);
}
}
推荐
-
在 JavaScript 中打开文件对话框 我需要一个解决方案,以便在单击时以HTML显示打开的文件对话框。单击 时,必须打开打开文件对话框。 我不想将输入文件框显示为HTML页面的一部分。它必须显示在单独的对话框中,该对话框
-
防止 Android 活动对话框在外部触摸时关闭 我有一个活动正在使用 Theme.Dialog 样式,因此它是另一个活动上的浮动窗口。但是,当我在对话框窗口外部单击(在后台活动上)时,对话框将关闭。如何阻止此行为?
-
无法解析方法 'show(android.support.v4.app.FragmentManager, java.lang.String) 由于某种原因,当我尝试显示对话框时,我收到来自dialog.show(fm,DIALOG_DATE)的错误;说无法解析方法'show(android.support.v4.app.FragmentManager, java.lang.String)' 为什么它不能解析该方法? }
-
JavaFX 警报及其大小 最近,JavaFX推出了Alerts(Java 8u40)。 请考虑下面的代码示例。如何显示比几个单词更长的完整消息?我的消息(属性)在最后被剪切,并且在我看来,警报没有正确调整其大小。 当然,用户可
-
点击外部安卓对话框以关闭它? 我想知道是否有可能以某种方式点击弹出对话框(或具有对话框主题的活动),然后通过点击外部来关闭它? 我做了一个快速的图片来说明它: 通常,您必须按后退键才能关闭对话框,但是
标签
推荐