gpt4 book ai didi

java - 如何在另一个 JComponent 上添加半透明的 JPanel

转载 作者:行者123 更新时间:2023-11-29 04:53:38 25 4
gpt4 key购买 nike

我正在尝试向应用添加功能。我的目标是用一个半透明的 JPanel(它将在中间包含一个 JXBusyLabel)覆盖一个 JComponent of the JFrame。

假设我们有这样的事情:

img1

点击我们希望有以下JPanel,但是是半透明的(这意味着它应该允许或多或少地看到它背后的内容):

img2

我尝试使用 glassPane 失败。 任何有关如何实现此目的的建议将不胜感激。另外,我注意到 JXBusyLabel 的背景不同,如果它的工作方式与半透明 jpanel 背景相同,那就太好了。锦上添花的是将加载轮放在那个 jpanel 的中间。

我们会在解决每个问题后立即更新下面的代码。任何关于如何实现这一目标的建议将不胜感激。

这里是有意编写的示例代码:

public class Main {


public static void main(String[] args) {
SwingUtilities.invokeLater(new TestApp());
}

}

class TestApp implements Runnable {
@Override
public void run(){
JFrame mainWindow = new JFrame("MyFrame");
mainWindow.setLayout(new BorderLayout());
mainWindow.setMinimumSize(new Dimension(300,300));

// mainWindow.add(initView(),BorderLayout.CENTER);
mainWindow.add(initLoadingPanel(),BorderLayout.CENTER);
mainWindow.add(initButton(),BorderLayout.PAGE_END);

mainWindow.setVisible(true);
}

private JPanel initView() {
JPanel viewPort = new JPanel();
viewPort.setLayout(new BoxLayout(viewPort, BoxLayout.Y_AXIS));
viewPort.add(new JLabel("label 1"));
viewPort.add(new JLabel("label 2"));
viewPort.add(new JLabel("label 3"));
viewPort.add(new JLabel("label ..."));
viewPort.add(new JLabel("label N"));
return viewPort;
}

private JPanel initLoadingPanel() {
JPanel trasparentPanel = new JPanel();
trasparentPanel.setOpaque(true);
trasparentPanel.setBackground(new Color(200,230,250,100));
trasparentPanel.add(initLoadingWheel());
return trasparentPanel;
}

private Component initLoadingWheel() {
JXBusyLabel loadingWheel = new JXBusyLabel(new Dimension(80,80));
loadingWheel.setBackground(new Color(200,230,250,100));
loadingWheel.setOpaque(true);
loadingWheel.setBusy(true);
return loadingWheel;
}

private JButton initButton() {
JButton button = new JButton("Start & Stop Loading");
button.addActionListener(new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

}
});
return button;
}
}

最佳答案

I tried unsuccesfully to use the glassPane

对我来说效果很好。阅读 Root Panes 上的 Swing 教程并下载工作示例。发布演示问题的 SSCCE

您还可以查看 Disabled Glass Pane对于一个简单的 API。当前代码仅显示文本,但您可以轻松修改类以显示图像,因为代码仅使用 JLabel 作为文本。

你也可以使用 JLayer装饰您的面板。

关于java - 如何在另一个 JComponent 上添加半透明的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com