2009-10-22 39 views
1

我想创建一个“L”形状的java应用程序,以便应用程序只占用屏幕的左边框和底边框。我也不希望正常的边框和标题栏在顶部。我见过其他人创造圆形和其他形状,但没有复杂的形状。这是一个Windows XP电脑,并将永远不会在任何其他操作系统。L形java应用程序窗口

那么,我该怎么做呢?

回答

4

java.awt.Window/javax.swing.JWindowjava.awt.Frame/javax.swing.JFramesetUndecorated将创建无框窗口。您可以将两个或更多个放在一起以创建一个L形。

从6u10起,Sun JRE还具有非标准API或非矩形和透明窗口。

2

我认为这应该是可能的,尽管你可能必须小心地布置你的组件。如果你看看here,并阅读关于设置窗口形状的章节,它会说以下“形状可以是java.awt.Shape接口的任何实例”。如果您再查看Shape接口,则java.awt.Polygon将实现该接口。所以你应该能够实现一个具有“L”形状的多边形。试一试。

1

在这里你去亚撒,这正是你需要的东西:

import com.sun.awt.AWTUtilities; 
import java.awt.Polygon; 
import java.awt.Shape; 
import java.awt.event.ComponentAdapter; 
import java.awt.event.ComponentEvent; 
import javax.swing.JFrame; 

public static void main(String[] args) 
{ 
    // create an undecorated frame 
    final JFrame lframe = new JFrame();     
    lframe.setSize(1600, 1200); 
    lframe.setUndecorated(true); 

    // using component resize allows for precise control 
    lframe.addComponentListener(new ComponentAdapter() { 
     // polygon points non-inclusive 
     // {0,0} {350,0} {350,960} {1600,960} {1600,1200} {0,1200} 
     int[] xpoints = {0,350,350,1600,1600,0}; 
     int[] ypoints = {0,0,960,960,1200,1200}; 

     @Override 
     public void componentResized(ComponentEvent evt) 
     { 
      // create the polygon (L-Shape) 
      Shape shape = new Polygon(xpoints, ypoints, xpoints.length); 

      // set the window shape 
      AWTUtilities.setWindowShape(lframe, shape); 
     } 
    }); 

    // voila! 
    lframe.setVisible(true); 
} 

reference -> "Setting the Shape of a Window"