gpt4 book ai didi

java - 将透明的 JPanel 放在另一个不起作用的 JPanel 之上

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:55 25 4
gpt4 key购买 nike

我试图将一个 JPanel 放在另一个包含 JTextArea 和一个按钮的 JPanel 之上,我希望上层 apnel 是透明的。我已经通过制作上面板的 setOpaque(false) 来尝试它。但它不工作。谁能帮我度过难关?提前致谢!

public class JpanelTest extends JPanel
{
public JpanelTest()
{
super();
onInit();
}
private void onInit()
{
setLayout(new BorderLayout());

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(new JTextArea(100,100),BorderLayout.CENTER);
panel.add(new JButton("submit"),BorderLayout.SOUTH);

JPanel glass = new JPanel();
glass.setOpaque(false);

add(panel,BorderLayout.CENTER);
add(glass,BorderLayout.CENTER);
setVisible(true);
}

public static void main(String args[])
{
new JpanelTest();
}
}

最佳答案

事实上,说出您想要一个面板而不是另一个面板的原因会很有用。

从您的代码开始,并对其进行了大量更改,我让它工作了,但它可能无法达到您的预期......

import java.awt.*;
import javax.swing.*;

public class Test extends JFrame
{
public Test()
{
super();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 200);

onInit();

setVisible(true);
}
private void onInit()
{
JLayeredPane lp = getLayeredPane();

JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(new JTextArea(), BorderLayout.CENTER);
panel.add(new JButton("Submit"), BorderLayout.SOUTH);
panel.setSize(300, 150); // Size is needed here, as there is no layout in lp

JPanel glass = new JPanel();
glass.setOpaque(false); // Set to true to see it
glass.setBackground(Color.GREEN);
glass.setSize(300, 150);
glass.setLocation(10, 10);

lp.add(panel, Integer.valueOf(1));
lp.add(glass, Integer.valueOf(2));
}

public static void main(String args[])
{
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new Test();
}
});
}
}

如果完全透明,好吧,就像它不在这里一样!当不透明时,它只会覆盖一些 GUI,但不会阻止鼠标点击,例如。

关于java - 将透明的 JPanel 放在另一个不起作用的 JPanel 之上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14068956/

25 4 0