我想在java中的其他JPanel上弹出一个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);
}
}
答案 0 :(得分:-3)
为此,你必须使用一个Panel(如果你使用的是NetBeans,你可以在Swing Containers中找到它),而在Frame的constuctor中,你必须将它设置为不可见,所以你需要看看它的底部它:(在这个例子中,我把我的面板称为“jPanel1”,我把它放在其中)
public Main() {
initComponents();
jPanel1.setVisible(false);//<-- This!
this.setLocationRelativeTo(null);
}
然后,你创建了一个buttom来“激活它”,但是这个代码在:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
jPanel1.setVisible(true);
}
(当然,如果你想把它设置为不可见,你只需要像在构造函数中一样)。
我测试它并且它有效:( Imgur没有工作,所以借口我必须使用postimg.org) https://postimg.org/gallery/1z6fpajva/
现在您可以设置边框,以便将新面板与其他框架区分开来: https://postimg.org/image/mdpf7hvxx/