使用Java Swing设计: 1.创建一个背景色为白色的窗口; 2.去掉窗口边框默认样式,且鼠标可以拖动窗口; 3.在窗口最上方添加自定义的白色标题栏; 4.标题栏最右侧有最小化按钮,最大化按钮,关闭按钮,全部为白色; 5.关闭窗口,进程也会结束;
时间: 2024-04-16 11:28:29 浏览: 249
用java语言完成一个窗口设计
要实现这些功能,你可以使用 `javax.swing.JFrame` 和 `.swing.JPanel` 来创建窗口和自定义标题栏。以下是一个示例代码:
```java
import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class CustomWindow extends JFrame {
private JPanel titleBar;
private Point initialClick;
public CustomWindow() {
setSize(400, 300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setUndecorated(true); // 去掉窗口边框默认样式
// 创建标题栏
createTitleBar();
getContentPane().setBackground(Color.WHITE); // 设置窗口背景色为白色
setVisible(true);
}
private void createTitleBar() {
// 创建标题栏面板
titleBar = new JPanel();
titleBar.setBackground(Color.WHITE);
titleBar.setPreferredSize(new Dimension(getWidth(), 30));
// 添加最小化按钮
JButton minimizeButton = createTitleBarButton("-");
minimizeButton.addActionListener(e -> setState(JFrame.ICONIFIED));
// 添加最大化/还原按钮
JButton maximizeButton = createTitleBarButton("□");
maximizeButton.addActionListener(e -> {
if (getExtendedState() == JFrame.MAXIMIZED_BOTH) {
setExtendedState(JFrame.NORMAL);
} else {
setExtendedState(JFrame.MAXIMIZED_BOTH);
}
});
// 添加关闭按钮
JButton closeButton = createTitleBarButton("✕");
closeButton.addActionListener(e -> {
dispose();
System.exit(0);
});
// 添加按钮到标题栏
titleBar.setLayout(new FlowLayout(FlowLayout.RIGHT));
titleBar.add(minimizeButton);
titleBar.add(maximizeButton);
titleBar.add(closeButton);
// 添加鼠标监听器以实现拖动窗口功能
titleBar.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
initialClick = e.getPoint();
getComponentAt(initialClick);
}
});
titleBar.addMouseMotionListener(new MouseAdapter() {
public void mouseDragged(MouseEvent e) {
int thisX = getLocation().x;
int thisY = getLocation().y;
int xMoved = e.getX() - initialClick.x;
int yMoved = e.getY() - initialClick.y;
int x = thisX + xMoved;
int y = thisY + yMoved;
setLocation(x, y);
}
});
// 将标题栏面板添加到窗口的顶部
getContentPane().add(titleBar, BorderLayout.NORTH);
}
private JButton createTitleBarButton(String text) {
JButton button = new JButton(text);
button.setFocusPainted(false);
button.setBackground(Color.WHITE);
button.setBorder(null);
button.setPreferredSize(new Dimension(30, 30));
return button;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
CustomWindow window = new CustomWindow();
});
}
}
```
在这个示例中,我们创建了一个继承自 JFrame 的 CustomWindow 类。在构造函数中,我们设置了窗口的大小和位置,并设置了默认的关闭操作。
然后,我们创建了一个自定义的标题栏,并添加了最小化、最大化和关闭按钮。这些按钮都是自定义的 `JButton`,它们的背景色为白色,并且没有边框。
我们还添加了鼠标监听器来实现拖动窗口的功能。当鼠标按下时,记录初始点击位置,并在鼠标拖动时计算窗口的新位置。
最后,我们将标题栏面板添加到窗口的顶部,并设置窗口的背景色为白色。
希望这个示例能满足你的需求!
阅读全文