数据加载中……
JAVA swing 如何显示一个不规则的窗体(例如三角形)

package com.sysdynamic.test;

import java.awt.*;
import java.awt.geom.Ellipse2D;
import java.awt.geom.GeneralPath;
import java.awt.geom.RoundRectangle2D;

import javax.swing.*;

public class ShapedWindow extends JFrame {

 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);
 }

 public static void main(String[] args) {
  JFrame.setDefaultLookAndFeelDecorated(true);
  SwingUtilities.invokeLater(new Runnable() {
   @Override
   public void run() {
    Window w = new ShapedWindow();
    w.setVisible(true);
    
    Rectangle bounds = w.getBounds();
               
                Rectangle newrec = new Rectangle(0, 0, bounds.width-100, bounds.height);
                GeneralPath gp;
                gp = new GeneralPath(newrec);
                gp.moveTo(bounds.width-100, 0);
                gp.lineTo(bounds.width, bounds.height/2);
                gp.lineTo(bounds.width-100, bounds.height);
                gp.lineTo(bounds.width-100, 0);
 
    /*com.sun.awt.AWTUtilities
      .setWindowShape(w, new Ellipse2D.Double(0, 0, w
        .getWidth(), w.getHeight()));
        */
                com.sun.awt.AWTUtilities.setWindowShape(w, gp); 
  }
  });
 }

}

 

posted on 2009-05-13 17:50 yellowstone 阅读(827) 评论(0)  编辑  收藏 所属分类: JAVA


只有注册用户登录后才能发表评论。


网站导航: