Swing/WindowShape のバックアップ(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/WindowShape へ行く。
- title: Windowの形を変更 tags: [JFrame, Shape, TextLayout] author: aterai pubdate: 2011-12-19T19:46:54+09:00 description: JFrameのタイトルバーなどを非表示にし、Windowの形を非矩形図形に変更します。
概要
JFrame
のタイトルバーなどを非表示にし、Window
の形を非矩形図形に変更します。
Screenshot
Advertisement
サンプルコード
JFrame frame = new JFrame();
frame.setUndecorated(true);
frame.setAlwaysOnTop(true);
frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
frame.getContentPane().add(label);
frame.getContentPane().setBackground(Color.GREEN);
frame.pack();
String str = textField.getText().trim();
//label.setText(str);
TextLayout tl = new TextLayout(str, font, frc);
Rectangle2D b = tl.getBounds();
Shape shape = tl.getOutline(AffineTransform.getTranslateInstance(-b.getX(),-b.getY()));
frame.setBounds(shape.getBounds());
//frame.setSize(shape.getBounds().width, shape.getBounds().height);
com.sun.awt.AWTUtilities.setWindowShape(frame, shape);
//frame.setShape(shape); // 1.7.0
frame.setLocationRelativeTo(parent);
frame.setVisible(true);
View in GitHub: Java, Kotlin解説
上記のサンプルでは、com.sun.awt.AWTUtilities.setWindowShape(...)
メソッドを使用して、JFrame
の形を変更しています。
Java 1.7.0
の場合は、Window#setShape(Shape)
を使用