Создайте округленный JFrame / ContentPane - PullRequest
8 голосов
/ 05 июня 2009

Я создаю окно входа с закругленными углами в Java. Все в порядке, см. Рис., Но у меня проблемы с прозрачностью JFrame / ContentPane. В каждом углу есть белые области (показанные стрелками), которые я, кажется, не могу удалить, поскольку не могу установить opague в false для JFrame или ContentPane.

Любые идеи о том, как я могу удалить эти белые области alt text

Ответы [ 4 ]

2 голосов
/ 05 июня 2009

Начиная с Java 1.3, есть хитрость, которая позволяет создавать частично прозрачные окна, или исчезающие окна (я обычно использую это для моих заставок), или специальный FX (такой как тени):

  • Перед открытием окна программно сделайте скриншот региона, в котором будет находиться ваше окно (используя java.awt.Robot.createScreenCapture ())
  • Установить снимок экрана в качестве фона вашего корневого контейнера (JPanel с пользовательской процедурой paintComponent ())
  • Теперь вы можете добавить все виды прозрачных компонентов или нарисовать другое полупрозрачное изображение поверх фона.

Пример, который создает окно с полупрозрачной тенью, используя эту технику: http://www.eclipsezone.com/eclipse/forums/t17720.html

2 голосов
/ 05 июня 2009

Не очень вам поможет, но Java7 будет поддерживать прозрачные и фасонные окна: Подробнее здесь . Они уже доступны в Java 6u10, но не публично, т. Е. Вам нужно использовать неподдерживаемый класс com.sun ..., который может измениться в будущем и сломать вашу программу.

1 голос
/ 08 марта 2015

попробуйте это. его работа :) 1001 *

yourframe.setBackground(new Color(0, 0, 0, 180));
yourframe.setUndecorated(true);
yourframe.addComponentListener(new ComponentAdapter() {
               @Override
                public void componentResized(ComponentEvent e) {
                    setShape(new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), 80, 80));
                }
            });
0 голосов
/ 05 июня 2009

JFrame нельзя сделать прозрачным, так как это тяжелый компонент. Только легкие компоненты, такие как JWindow, могут быть прозрачными.

...