设置窗体为网格布局,录入QQ号,不是数字不让录入,写出Java完整代码
时间: 2024-12-15 20:28:50 浏览: 10
当然可以。在Java中,你可以使用Swing库来创建GUI界面,并结合`JFormattedTextField`和`KeyListener`来限制用户只输入数字。以下是一个简单的例子,展示了如何设置窗口为网格布局,创建一个用于输入QQ号的文本框:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.DecimalFormat;
public class QQNumberEntry extends JFrame {
private JPanel panel;
private JFormattedTextField textField;
public QQNumberEntry() {
// 创建窗口和网格布局
setTitle("QQ号码输入");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new GridLayout(1, 1, 5, 5)); // 1行1列,间距5像素
// 创建并配置网格面板
panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL; // 水平填充
// 添加QQ号输入字段
DecimalFormat df = new DecimalFormat("#00000000"); // 只允许6位数字
textField = new JFormattedTextField(df);
textField.setHorizontalAlignment(JLabel.TRAILING); // 右对齐
textField.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String input = textField.getText();
if (!input.matches("\\d+")) { // 验证是否全为数字
textField.setText("");
}
}
});
gbc.gridx = 0;
gbc.gridy = 0;
gbc.weightx = 1; // 自适应宽度
panel.add(textField, gbc);
add(panel);
pack(); // 设置窗口大小适合内容
setLocationRelativeTo(null); // 居中显示
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
new QQNumberEntry().setVisible(true);
});
}
}
```
在这个代码里,我们创建了一个`QNNumberEntry`类,它继承自`JFrame`。设置了窗口的标题、关闭操作以及布局为网格布局。然后我们添加了一个`JFormattedTextField`,通过`DecimalFormat`限制了输入格式为六位数字。最后,我们监听了文本框的`ActionEvent`,当用户输入非数字字符时清空输入。
阅读全文