要使JFrame
在窗口中不可拖动,可以通过移除窗口的默认标题栏并自定义窗口的行为来实现。以下是一个示例代码,展示了如何实现这一点:
以下是一个简单的Java Swing程序,展示了如何移除JFrame
的默认标题栏并使其不可拖动:
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class NonDraggableFrame extends JFrame {
private int mouseX, mouseY;
public NonDraggableFrame() {
// 移除默认标题栏
setUndecorated(true);
// 设置窗口大小和位置
setSize(400, 300);
setLocationRelativeTo(null); // 居中显示
// 添加一个自定义的鼠标监听器来处理拖动事件
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
mouseX = e.getX();
mouseY = e.getY();
}
});
addMouseMotionListener(new MouseAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
int deltaX = e.getX() - mouseX;
int deltaY = e.getY() - mouseY;
setLocation(getLocation().x + deltaX, getLocation().y + deltaY);
}
});
// 添加一些内容到窗口
getContentPane().setBackground(Color.LIGHT_GRAY);
JLabel label = new JLabel("This is a non-draggable JFrame");
label.setHorizontalAlignment(SwingConstants.CENTER);
getContentPane().add(label);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
NonDraggableFrame frame = new NonDraggableFrame();
frame.setVisible(true);
});
}
}
通过这种方式,你可以创建一个不可拖动的JFrame
,并且可以根据需要进一步自定义窗口的行为和外观。
领取专属 10元无门槛券
手把手带您无忧上云