アプリケーションが画面の左と下の境界のみを占めるように、「L」の形をした Java アプリケーションを作成したいと考えています。また、通常の境界線とタイトルバーを上部に表示したくありません。他の人が円やそのような形を作っているのを見たことがありますが、複雑な形はありません。これは Windows XP コンピューター用であり、他の OS では使用できません。
それで、どうすればこれを行うことができますか?
アプリケーションが画面の左と下の境界のみを占めるように、「L」の形をした Java アプリケーションを作成したいと考えています。また、通常の境界線とタイトルバーを上部に表示したくありません。他の人が円やそのような形を作っているのを見たことがありますが、複雑な形はありません。これは Windows XP コンピューター用であり、他の OS では使用できません。
それで、どうすればこれを行うことができますか?
java.awt.Window
/javax.swing.JWindow
およびjava.awt.Frame
/javax.swing.JFrame
をsetUndecorated
使用すると、フレームのないウィンドウが作成されます。2つ以上を組み合わせてL字型にすることもできます。
6u10 以降、Sun JRE には非標準 API または非長方形で透明なウィンドウもあります。
ここでAsaに行きます、これはまさにあなたが必要とするものです:
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);
}