Сглаженное окно JWindow (форма)

У меня в приложении есть JWindow, оно всплывает в правом верхнем углу. Я установил форму RoundRectangle2D, но граница окна JWindow не сглажена и поэтому выглядит ужасно. Итак, мой вопрос: как мне сгладить JWindow? Я знаю, как сглаживать фигуры с помощью Graphics, но это не работает для самого JWindow, не так ли? В любом случае, как я могу сглаживать границу моего JWindow?

Код:

открытый класс Selector реализует интерфейс {

//Variables
//Windows
    static JWindow Frame = new JWindow();

    static JWindow[] Label = new JWindow[100];

    static Shape Shape;

    static JWindow ExitWindow = new JWindow();

    static JWindow MenuWindowHide = new JWindow();

public static void initialize() {

    //Settings
    Frame.setBounds(0,0,(int)Utility.getScreenRes().getWidth(),(int)Utility.getScreenRes().getHeight());

    Frame.setOpacity(0.4f);


    ExitWindow.setBounds((int) (Utility.getScreenRes().getWidth() - 40), 25,20,20);

    ExitWindow.getContentPane().setBackground(Color.DARK_GRAY);

    ExitWindow.setShape(new RoundRectangle2D.Double(0,0,20,20, 6, 6));

    //Post settings
    Frame.setVisible(true);

    ExitWindow.setVisible(true);

}

}


person Erik Nystø Rahka    schedule 14.03.2013    source источник


Ответы (1)


Для этого я покажу, как создать JFrame любой формы со сглаживанием.

public class MainFrame extends JFrame
{

public MainFrame()
{
    setUndecorated(true);
    setBackground(new Color(0,255,0,0));
    setSize(300, 300);
    add(PaintingSurface); //Where PaintingSurface is JPanel with PaintPanel method below
    setVisible(true);
}

Затем добавьте JPanel того же размера, что и фрейм, и в его методе рисования нарисуйте нужную шпае с помощью следующего метода

public void PaintPanel(Graphics g,Shape PaintArea)
{
    Graphics2D gg = (Graphics2D) g;
    gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING,  RenderingHints.VALUE_ANTIALIAS_ON);

    gg.fill(PaintArea);
}   
person bobjamin    schedule 04.07.2013