У меня есть JFrame, который содержит JPanel. Я хочу сделать рамку полностью прозрачной, а панель слегка прозрачной.Transparent JFrame
Я использую следующий код, чтобы сделать это:
frame.setBackground(new Color(0, 0, 0, 0));
panel.setBackground(new Color(51, 51, 51, 190));
Нужный эффект достигается, однако, когда я сделать JFrame прозрачным, используя этот метод, он искажает все остальные компоненты.
следующее изображение демонстрирует это лучше, чем я могу объяснить.
Слева показан пример, без прозрачности и текст четко видно. Справа панель и кадр устанавливаются с использованием приведенного выше кода, а текст искажен.
Что мне не хватает?
Не использовать цвета на основе альфа с компонентами (работает хорошо для кадра) вместо этого вам нужно использовать setOpaque (false) и переопределить метод paintComponent панели и подделать его – MadProgrammer
Для [пример] (http://stackoverflow.com/questions/32574630/set-jframe-background-transparent-but-show- содержание/32575548 # 32575548) и [пример] (http://stackoverflow.com/questions/29026419/using-frame-setbackground0-255-0-0-doesnt-work-with-linux/29028825#29028825) – MadProgrammer
Может быть, шрифт сглаживания будет явно задан, когда решение MadProgrammer не поможет. Перед вызовом super.paintComponent или так: Graphics2D.setRenderingHint (RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); ' –