如何从任何java gui中删除窗口框

时间:2013-06-01 06:36:48

标签: java swing jframe desktop-application

如何从任何java程序中删除窗口框。因为我想让它看起来没有边框。我知道在jre上运行的任何jar文件会自动获得这样的窗口。所以我想知道是否有解决方法。

提前致谢

这是一张我想要做的照片

enter image description here

1 个答案:

答案 0 :(得分:4)

请参阅Frame#setUndecorated

您还可以使用默认情况下未修饰的JWindow

检查thisthis例如使用

<强>更新

如果删除边框,则负责移动和调整窗口大小...

此“基本”示例演示了如何使用鼠标移动JWindow。这使得窗口周围的“拖动区域”宽度为10像素。

调整大小将是类似的过程,但您需要决定调整大小的方向(即,它可能需要您在调整大小时移动窗口;)

import java.awt.Component;
import java.awt.Cursor;
import java.awt.EventQueue;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JWindow;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;

public class TestMoveWindow {

    public static void main(String[] args) {
        new TestMoveWindow();
    }

    public TestMoveWindow() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JWindow window = new JWindow();
                window.setSize(200, 200);
                window.addWindowListener(new WindowAdapter() {
                    @Override
                    public void windowClosing(WindowEvent e) {
                        System.exit(0);
                    }

                });

                MouseAdapter mouseHandler = new MouseAdapter() {

                    private Point offset;

                    protected boolean isWithinBorder(MouseEvent e) {
                        Point p = e.getPoint();
                        Component comp = e.getComponent();
                        return p.x < 10 || p.y < 10 || p.x > comp.getWidth() - 10 || p.y > comp.getHeight()  - 10;
                    }

                    @Override
                    public void mouseMoved(MouseEvent e) {
                        Component comp = e.getComponent();
                        if (isWithinBorder(e)) {
                            System.out.println("Move");
                            comp.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR));
                        } else {
                            System.out.println("Default");
                            comp.setCursor(Cursor.getDefaultCursor());
                        }
                    }

                    @Override
                    public void mouseDragged(MouseEvent e) {
                        if (offset != null) {
                            Point pos = e.getLocationOnScreen();

                            int x = pos.x - offset.x;
                            int y = pos.y - offset.y;

                            System.out.println(x + "x" + y);

                            SwingUtilities.getWindowAncestor(e.getComponent()).setLocation(x, y);
                        }
                    }

                    @Override
                    public void mousePressed(MouseEvent e) {
                        if (isWithinBorder(e)) {
                            Point pos = e.getComponent().getLocationOnScreen();
                            offset = new Point(e.getLocationOnScreen());
                            offset.x -= pos.x;
                            offset.y -= pos.y;
                        }
                    }

                };

                window.getContentPane().addMouseListener(mouseHandler);
                window.getContentPane().addMouseMotionListener(mouseHandler);

                window.setLocationRelativeTo(null);
                window.setVisible(true);
            }
        });
    }
}