import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Window;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.JRadioButton;
import javax.swing.SwingUtilities;
public class ShapedWindow extends JFrame implements ComponentListener {
private static final long serialVersionUID = 1L;
private static RoundRectangle2D.Double shape;
private static Window w;
public ShapedWindow() {
super("Test oval-shaped window");
this.setLayout(new FlowLayout());
this.add(new JButton("test"));
this.add(new JCheckBox("test"));
this.add(new JRadioButton("test"));
this.add(new JProgressBar(0, 100));
this.setSize(new Dimension(400, 300));
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addComponentListener(this);
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
w = new ShapedWindow();
w.setVisible(true);
shape = new RoundRectangle2D.Double(0, 0, w.getWidth(), w.getHeight(), 20, 20);
com.sun.awt.AWTUtilities.setWindowShape(w, shape);
}
});
}
@Override
public void componentResized(ComponentEvent e) {
shape.width = w.getWidth();
shape.height = w.getHeight();
com.sun.awt.AWTUtilities.setWindowShape(w, shape);
}
@Override
public void componentHidden(ComponentEvent e) {
}
@Override
public void componentMoved(ComponentEvent e) {
}
@Override
public void componentShown(ComponentEvent e) {
}
}

Posted by 밤치







