Я пытаюсь сделать свой JPanel прозрачным, но я просто не могу этого добиться. Я пробовал этот код, но он не работает. Кроме того, какова граница "a" от rgba?
import java.awt.*;
import java.awt.event.*;
import java.io.IOException;
import javax.swing.*;
import javax.swing.plaf.LayerUI;
public class Animation extends JPanel implements Runnable
JButton buton = new JButton("BUTTON!!!! ");
public Animation(){
add(buton);
}
public void paintComponent(Graphics g) {
g.setColor(getBackground());
Rectangle r = g.getClipBounds();
g.fillRect(r.x, r.y, r.width, r.height);
super.paintComponent(g);
}
public static void main(String[] args) {
JFrame frame = new JFrame();
JPanel panel = new Animation();
panel.setOpaque(false);
panel.setBackground(new Color(52, 152, 219,0));
panel.repaint();
frame.add(panel);
frame.setVisible(true);
frame.setSize(1000,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
;
Посмотрите это..
frame.setBackground(new Color(0,0,0,0)); //
//добавление в код
frame.setUndecorated(true);
frame.setOpacity(0.5f);
вы можете использовать его для JFrame: на самом деле он устанавливает прозрачный цвет на панель или рамку. Сначала кадр должен быть неотделенным (true).
Вы можете установить его, также устанавливая альфа- значение в 0.
И вот волшебство оракула
Ваша JPanel
прозрачна, но вы видите JFrame
.
Вы также должны сделать его прозрачным. (JFrame
требует frame.setUndecorated(true);
будет называться первым).
Границы альфы зависят от конструктора Color
который вы используете.
Существует много перегруженных конструкторов. Тот, который вы используете, ожидает, что int
и его границы равны 0-255.
Конструктор с аргументами float
требует ограничений от 0f до 1.0f.
Надеюсь это поможет.
Удачи.