我正在开发的应用程序是一个游戏.我想要做的是让JPanels出现在JFrame中,就像文本或消息窗口一样,然后在不再使用时消失.我已经在Netbeans中将这些JPanel设计为外部类,并希望能够在actionPerformed()方法中调用它们.JOptionPanes或其他弹出对话框不是一个选项,因为它们将焦点从游戏中移开.我也看到有人在类似的问题上建议使用CardLayout.这不是我想要的,因为我不只是试图交换窗格.当程序告诉他们时,它们应该消失.我怎么做,比如将它绑定到JButton Action?
我正在Java Swing中创建一个虚拟钢琴类型程序.我现在的钢琴键区域是一个JPanel,其水平BoxLayout包含白色JButtons作为白键.我也想添加黑键,让它们与白键重叠.
我尝试过两种不同的方法.一个是使用OverlayLayout.遗憾的是,OverlayLayout管理器在线没有太多文档,并且在NetBeans GUI构建器中不可用.我不知道如何让它发挥作用.我尝试过的第二件事是使用JLayeredPanes.即使在Netbeans中弄乱它之后,我似乎无法想出那个.
所以我认为我的问题非常简单.如果有的话,在其他JButton之上添加JButton的最佳方法是什么?或者也许有一个替代使用JButtons钢琴键?
编辑
我结合了aioobe和dacwe的代码来获得我想要的结果.我基本上使用dacwe的z-ordering与aioobe的基本尺寸(按比例放大)和mod 7部分.我还添加了一些变量以使事情更加清晰.这就是我现在拥有的.
import javax.swing.*;
import java.awt.Color;
public class Test2 {
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
JLayeredPane panel = new JLayeredPane();
frame.add(panel);
int maxKeys = 8;
int width = 60;
int height = 240;
for (int i = 0; i < maxKeys; i++) {
JButton b = new JButton();
b.setBackground(Color.WHITE);
b.setLocation(i * width, 0);
b.setSize(width, height);
panel.add(b, 0, -1);
}
int width2 = 48;
int height2 = 140;
for …Run Code Online (Sandbox Code Playgroud)