我想创build一个“L”形状的Java应用程序,以便应用程序只占用屏幕的左边界和底部边界。 我也不希望正常的边框和标题栏在顶部。 我见过其他人创造这样的圈子和其他形状,但没有复杂的形状。 这是一个Windows XP电脑,将永远不会在任何其他的操作系统。
那么,我将如何做到这一点?
带有setUndecorated
java.awt.Window
/ javax.swing.JWindow
和java.awt.Frame
/ javax.swing.JFrame
将创建无框窗口。 你可以把两个或更多的一起创建一个L形。
Sun JRE从6月10日起,也有非标准的API或非矩形和透明窗口。
我认为这应该是可能的,虽然你可能要小心布置你的组件。 如果你看这里 ,并阅读设置窗口的形状部分它说下面的“该形状可以是java.awt.Shape接口的任何实例”。 如果您再查看Shape接口,则java.awt.Polygon将实现该接口。 所以你应该能够实现一个多边形w / a“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.addComponentlistner(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); }
参考 – >“设置窗口的形状”