问题:1.按钮直接不见了;2.窗口依旧无法移动
时间: 2023-08-06 21:08:45 浏览: 174
非常抱歉,我之前的回答有一些错误。以下是修复了您提到的问题的代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CustomWindow extends JFrame {
private JPanel titleBar;
private JButton minimizeButton;
private JButton maximizeButton;
private JButton closeButton;
private int xx, xy;
public CustomWindow() {
// 设置窗口背景色
getContentPane().setBackground(new Color(204, 204, 204));
// 去掉窗口边框默认样式
setUndecorated(true);
// 固定窗口大小
setSize(1100, 700);
// 窗口居中显示
setLocationRelativeTo(null);
// 添加标题栏
titleBar = new JPanel();
titleBar.setBackground(Color.WHITE);
titleBar.setLayout(null); // 使用自定义布局
// 创建最小化按钮
minimizeButton = new JButton("-");
minimizeButton.setBackground(Color.WHITE);
minimizeButton.setFocusPainted(false);
minimizeButton.setBounds(1000, 0, 50, 30); // 设置按钮的位置和大小
// 创建最大化按钮
maximizeButton = new JButton("口");
maximizeButton.setBackground(Color.WHITE);
maximizeButton.setFocusPainted(false);
maximizeButton.setBounds(1050, 0, 50, 30);
// 创建关闭按钮
closeButton = new JButton("×");
closeButton.setBackground(Color.WHITE);
closeButton.setFocusPainted(false);
closeButton.setBounds(1100, 0, 50, 30);
// 添加鼠标移动事件监听器,实现窗口拖动效果
titleBar.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
xx = e.getX();
xy = e.getY();
}
});
titleBar.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
int x = e.getXOnScreen();
int y = e.getYOnScreen();
setLocation(x - xx, y - xy);
}
});
// 添加按钮到标题栏
titleBar.add(minimizeButton);
titleBar.add(maximizeButton);
titleBar.add(closeButton);
// 添加标题栏到窗口
add(titleBar, BorderLayout.NORTH);
// 设置关闭窗口时退出进程
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private class ButtonMouseListener extends MouseAdapter {
@Override
public void mouseEntered(MouseEvent e) {
JButton button = (JButton) e.getSource();
button.setBackground(Color.LIGHT_GRAY);
}
@Override
public void mouseExited(MouseEvent e) {
JButton button = (JButton) e.getSource();
button.setBackground(Color.WHITE);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
CustomWindow window = new CustomWindow();
window.setVisible(true);
});
}
}
```
请将以上代码保存在一个名为`CustomWindow.java`的文件中,并重新编译运行。现在,您应该能够通过鼠标拖动标题栏来移动窗口了。按钮也应该正确地显示在标题栏的最右边。再次对之前的错误表示歉意,感谢您的指正!
阅读全文