如何从任何 java 程序中删除窗口框。因为我想让它看起来没有边界。我知道在 jre 上运行的任何 jar 文件都会自动获得这样的窗口。所以我想知道是否有解决方法。
提前致谢
这是一张我想要做的照片
如何从任何 java 程序中删除窗口框。因为我想让它看起来没有边界。我知道在 jre 上运行的任何 jar 文件都会自动获得这样的窗口。所以我想知道是否有解决方法。
提前致谢
这是一张我想要做的照片
您也可以使用JWindow
默认未装饰的 a 。
更新
如果您删除边框,您将负责移动和调整窗口大小......
这个“基本”示例演示了如何JWindow
使用鼠标移动 a。这会在窗口周围形成一个 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);
}
});
}
}