【发布时间】:2018-08-25 02:58:20
【问题描述】:
我想让一个 JPanel 在 java 中弹出另一个 JPanel。但是我在互联网上找不到任何有用的东西。我尝试使用绝对定位,但底层的按钮之类的东西通过顶层显示。 我上传了一张我想做的非常丑陋的图画。 有没有简单的方法可以做到这一点?
编辑: 我试着按照“Ulkra”的建议去做。这是代码和屏幕截图:
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setVisible(true);
frame.setSize(new Dimension(400, 400));
JPanel panel = new JPanel();
JPanel foregroundPanel = new JPanel();
foregroundPanel.setVisible(false);
foregroundPanel.setBackground(Color.BLUE);
foregroundPanel.setLayout(new BoxLayout(foregroundPanel, BoxLayout.Y_AXIS));
JPanel backgroungPanel = new JPanel();
backgroungPanel.setBackground(Color.RED);
backgroungPanel.setLayout(new BoxLayout(backgroungPanel, BoxLayout.Y_AXIS));
for (int i = 0; i < 10; i++) {
backgroungPanel.add(new JButton("BackgroundBtn " + i));
}
foregroundPanel.add(new JButton("ForegroundBtn 1"));
JButton makeVisibleBtn = new JButton("+");
makeVisibleBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
foregroundPanel.setVisible(true);
}
});
backgroungPanel.add(makeVisibleBtn);
JButton makeInvisibleBtn = new JButton("-");
makeInvisibleBtn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
foregroundPanel.setVisible(false);
}
});
foregroundPanel.add(makeInvisibleBtn);
panel.add(backgroungPanel);
panel.add(foregroundPanel);
frame.add(panel);
}
}
【问题讨论】:
-
你尝试过的代码在哪里?
-
请出示您的代码并给我们一个确切的问题来帮助您。
-
使用未修饰的 JDialog 作为弹出窗口。
-
未修饰的 JDialog 正是我所需要的。谢谢
-
我发现该解决方案存在问题。 JDialog 不与主 JFrame 一起移动。它可以以某种方式固定到 JFrame 的位置吗?
标签: java swing layout jpanel overlap