小编aha*_*low的帖子

如何在JFrame中显示/隐藏JPanel?

我正在开发的应用程序是一个游戏.我想要做的是让JPanels出现在JFrame中,就像文本或消息窗口一样,然后在不再使用时消失.我已经在Netbeans中将这些JPanel设计为外部类,并希望能够在actionPerformed()方法中调用它们.JOptionPanes或其他弹出对话框不是一个选项,因为它们将焦点从游戏中移开.我也看到有人在类似的问题上建议使用CardLayout.这不是我想要的,因为我不只是试图交换窗格.当程序告诉他们时,它们应该消失.我怎么做,比如将它绑定到JButton Action?

java swing jpanel jframe hide

16
推荐指数
1
解决办法
11万
查看次数

使JButton重叠

我正在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)

java swing overlap jbutton jlayeredpane

5
推荐指数
1
解决办法
5614
查看次数

标签 统计

java ×2

swing ×2

hide ×1

jbutton ×1

jframe ×1

jlayeredpane ×1

jpanel ×1

overlap ×1