我想创建一个“L”形状的java应用程序,以便应用程序只占用屏幕的左边框和底边框。我也不希望正常的边框和标题栏在顶部。我见过其他人创造圆形和其他形状,但没有复杂的形状。这是一个Windows XP电脑,并将永远不会在任何其他操作系统。L形java应用程序窗口
那么,我该怎么做呢?
我想创建一个“L”形状的java应用程序,以便应用程序只占用屏幕的左边框和底边框。我也不希望正常的边框和标题栏在顶部。我见过其他人创造圆形和其他形状,但没有复杂的形状。这是一个Windows XP电脑,并将永远不会在任何其他操作系统。L形java应用程序窗口
那么,我该怎么做呢?
java.awt.Window
/javax.swing.JWindow
和java.awt.Frame
/javax.swing.JFrame
与setUndecorated
将创建无框窗口。您可以将两个或更多个放在一起以创建一个L形。
从6u10起,Sun JRE还具有非标准API或非矩形和透明窗口。
我认为这应该是可能的,尽管你可能必须小心地布置你的组件。如果你看看here,并阅读关于设置窗口形状的章节,它会说以下“形状可以是java.awt.Shape接口的任何实例”。如果您再查看Shape接口,则java.awt.Polygon将实现该接口。所以你应该能够实现一个具有“L”形状的多边形。试一试。
在这里你去亚撒,这正是你需要的东西:
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);
}