我想添加一个半透明的jPanel。但是放置在jPanel中的其他组件,比如按钮和标签,应该以100%不透明的方式显示。我正在使用netbeans来设计GUI。通常,我会在面板中拖放swing组件来设计GUI(我不编写它们的代码)。我在属性窗口中看不到任何属性来实现这一点。请帮帮我。因为我是java的新手,所以请给我一个详细的回答。提前谢谢。
发布于 2014-07-04 05:34:14
可以使用颜色JPanel.setBackground(颜色bg);使面板变为半透明。重要的是颜色的属性。可以使用alpha值构造颜色,以设置颜色的透明度。
panel.setBackground(新颜色(213,134,145,123));
最后一个参数是实际的alpha值,您可以调整它来查看效果。
代码如下:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class PanelTest {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
@Override
public void run() {
PanelTest test = new PanelTest();
test.createUI();
}
};
SwingUtilities.invokeLater(runnable);
}
public void createUI(){
JFrame frame = new JFrame("Panel Test");
JPanel panel = new JPanel();
panel.setBackground(new Color(213, 134, 145, 123));
JButton button = new JButton("I am a button");
JLabel label = new JLabel("I am a label");
label.setFont(new Font("Arial", Font.BOLD, 15));
JTextField textField = new JTextField();
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
panel.add(button);
panel.add(Box.createVerticalStrut(20));
panel.add(label);
panel.add(Box.createVerticalStrut(20));
panel.add(textField);
panel.setBorder(BorderFactory.createEmptyBorder(30, 30, 30, 30));
BottomPanel buttomPanel = new BottomPanel();
buttomPanel.add(panel);
frame.add(buttomPanel,BorderLayout.CENTER);
frame.setResizable(false);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
@SuppressWarnings("serial")
class BottomPanel extends JPanel{
@Override
protected void paintComponent(Graphics g) {
for (int y = 0; y < 200; y = y + 20) {
g.drawString("I am the string on the bottom", 5, y);
}
}
}
}
这就是效果,希望能对你有所帮助。
发布于 2017-06-24 18:37:21
您可以像往常一样,使用拖放创建jPanel,然后更改面板的颜色并使其透明或半透明,您可以使用以下代码:
panel.setBackground(new Color(0.0f, 0.0f, 0.0f, 0.5f));
可以通过更改color构造函数的前三个参数来更改颜色,这三个参数表示RGB;可以通过更改第四个参数来更改透明度,第四个参数是颜色的Alpha值。
https://stackoverflow.com/questions/24559167
复制