用Java图形用户界面做项目的几个小问题
1.做一个判断,如果有此号弹一个提示卡号的对话框(在一个弹出对话框中显示卡的号码),如果没有此号就弹一个错误提示对话框2.怎样判断要写入的卡号不重复且只能是数字...
1.做一个判断,如果有此号弹一个提示卡号的对话框(在一个弹出对话框中显示卡的号码),如果没有此号就弹一个错误提示对话框
2.怎样判断要写入的卡号不重复且只能是数字 展开
2.怎样判断要写入的卡号不重复且只能是数字 展开
2个回答
展开全部
1.你把有效地卡号放到一个List中,得到一个卡号后,用List的contains()方法,查看是否有效。对话框可以用javax.swing.JDialog类实现。
2.第二个比较难,不过可以用addCaretListener()方法,监听插入符的改变,这样他每输入一个字符,你都可以判断一下是否是合法,不合法就将文本设为未输入该字符前的状态,我想也差不多了吧,
3.至于如何判断只能是数字我想可以这样
《1》.转换成Integer,如果没有异常,ok。
《2》.将文本框内容String,转化成char[],在判断每个char是否是0-9的字符。
2.第二个比较难,不过可以用addCaretListener()方法,监听插入符的改变,这样他每输入一个字符,你都可以判断一下是否是合法,不合法就将文本设为未输入该字符前的状态,我想也差不多了吧,
3.至于如何判断只能是数字我想可以这样
《1》.转换成Integer,如果没有异常,ok。
《2》.将文本框内容String,转化成char[],在判断每个char是否是0-9的字符。
展开全部
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class GUI extends JFrame {
private List<String> numbers;
private JButton btn;
private JTextField input;
private JTextArea area;
// ^-?\\d+$ 匹配整数
// [0-9]+(.[0-9]+)? 匹配浮点数
private Pattern pattern = Pattern.compile("^-?\\d+$");
public GUI() {
super.setTitle("号码检查");
super.setResizable(false);
super.setSize(400, 250);
super.setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new BorderLayout());
JPanel topPanel = new JPanel(new BorderLayout());
area = new JTextArea();
JScrollPane jsp = new JScrollPane(area);
btn = new JButton("添加该号码");
numbers = new ArrayList<String>();
input = new JTextField(30);
topPanel.add(input, BorderLayout.CENTER);
topPanel.add(btn, BorderLayout.EAST);
mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
mainPanel.add(topPanel, BorderLayout.NORTH);
mainPanel.add(jsp, BorderLayout.CENTER);
getContentPane().add(mainPanel);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String in = GUI.this.input.getText();
if (in == null || in.length() == 0) {
JOptionPane.showMessageDialog(GUI.this, "当前没有输入数字,请输入数字");
}//
else {
Matcher matcher = pattern.matcher(in);
boolean b = matcher.matches();
if (!b) {
// input is not a number
JOptionPane.showMessageDialog(GUI.this, "不是 数字", "错误", JOptionPane.ERROR_MESSAGE);
}//
else if (GUI.this.numbers.contains(in)) {
// input is a number but existed already
JOptionPane.showMessageDialog(GUI.this, "你输入的数字:" + in + ", 已经存在!");
}//
else {
// input is a new number
numbers.add(in);
area.append(in + "\n");
JOptionPane.showMessageDialog(GUI.this, "你输入的数字:" + in + ", 合法,已经添加到数组中!");
}
}
}
});
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new GUI().setVisible(true);
}
});
}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class GUI extends JFrame {
private List<String> numbers;
private JButton btn;
private JTextField input;
private JTextArea area;
// ^-?\\d+$ 匹配整数
// [0-9]+(.[0-9]+)? 匹配浮点数
private Pattern pattern = Pattern.compile("^-?\\d+$");
public GUI() {
super.setTitle("号码检查");
super.setResizable(false);
super.setSize(400, 250);
super.setLocationRelativeTo(null);
JPanel mainPanel = new JPanel(new BorderLayout());
JPanel topPanel = new JPanel(new BorderLayout());
area = new JTextArea();
JScrollPane jsp = new JScrollPane(area);
btn = new JButton("添加该号码");
numbers = new ArrayList<String>();
input = new JTextField(30);
topPanel.add(input, BorderLayout.CENTER);
topPanel.add(btn, BorderLayout.EAST);
mainPanel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
mainPanel.add(topPanel, BorderLayout.NORTH);
mainPanel.add(jsp, BorderLayout.CENTER);
getContentPane().add(mainPanel);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String in = GUI.this.input.getText();
if (in == null || in.length() == 0) {
JOptionPane.showMessageDialog(GUI.this, "当前没有输入数字,请输入数字");
}//
else {
Matcher matcher = pattern.matcher(in);
boolean b = matcher.matches();
if (!b) {
// input is not a number
JOptionPane.showMessageDialog(GUI.this, "不是 数字", "错误", JOptionPane.ERROR_MESSAGE);
}//
else if (GUI.this.numbers.contains(in)) {
// input is a number but existed already
JOptionPane.showMessageDialog(GUI.this, "你输入的数字:" + in + ", 已经存在!");
}//
else {
// input is a new number
numbers.add(in);
area.append(in + "\n");
JOptionPane.showMessageDialog(GUI.this, "你输入的数字:" + in + ", 合法,已经添加到数组中!");
}
}
}
});
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new GUI().setVisible(true);
}
});
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询