Java 进行了一个try-and-catch测试,以查找用户输入是否不是数字。需要帮助才能将一个JTextfield写入为空吗
我的try-and-catch方法可以工作,并且能够确定所选JTextField的文本输入是否为数字。( 当它不是一个数字时,文本应该被删除,并给出一条消息,说明它不是一个数字,但到目前为止,我只能通过使用for循环删除所写的文本。这将删除所有JTextFields上的所有文本。我只需要删除用户刚刚编写的一个。我还没有找到一种正确的方法,将for循环所做的事情以一种只删除一次文本的方式放置 这是一个数独游戏,所以它有81个文本字段 您可以在最概括的部分找到测试,上面有以下注释: //---------------------------------------------------------这个测试<只想删除一个感觉用户写的Java 进行了一个try-and-catch测试,以查找用户输入是否不是数字。需要帮助才能将一个JTextfield写入为空吗,java,try-catch,jtextfield,Java,Try Catch,Jtextfield,我的try-and-catch方法可以工作,并且能够确定所选JTextField的文本输入是否为数字。( 当它不是一个数字时,文本应该被删除,并给出一条消息,说明它不是一个数字,但到目前为止,我只能通过使用for循环删除所写的文本。这将删除所有JTextFields上的所有文本。我只需要删除用户刚刚编写的一个。我还没有找到一种正确的方法,将for循环所做的事情以一种只删除一次文本的方式放置 这是一个数独游戏,所以它有81个文本字段 您可以在最概括的部分找到测试,上面有以下注释: //------
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.concurrent.ThreadLocalRandom;
/**
* Created by Gaute on 1/30/2017.
*/
public class Assignment03GUI extends JFrame implements ActionListener{
ArrayList<JTextField> txtfeltNummer = new ArrayList<JTextField>();
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenu newGame = new JMenu("New Game");
JMenuItem easy = new JMenuItem("Easy");
JMenuItem medium = new JMenuItem("Medium");
JMenuItem hard = new JMenuItem("Hard");
JMenuItem deleteGame = new JMenuItem("Delete Game");
public Assignment03GUI() {
JFrame sudokuWindow = new JFrame();
sudokuWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sudokuWindow.setTitle("Sudoku");
sudokuWindow.setLayout(new GridLayout(9, 0));
sudokuWindow.setSize(1000,1000);
menuBar.add(fileMenu);
fileMenu.add(newGame);
fileMenu.add(deleteGame);
newGame.add(easy);
newGame.add(medium);
newGame.add(hard);
sudokuWindow.setJMenuBar(menuBar);
JTextField tekstfelt; //Deklarer variabelen så den kan brukes utenfor for løkka
for (int i = 0; i < 81; i++) {
tekstfelt = new JTextField();
//---------------------------------------------------------This test < Just want to remove that one felt user wrote in
tekstfelt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = ((JTextField) e.getSource()).getText();
try{
Integer.parseInt(text);
System.out.println("An integer");
}
catch (NumberFormatException e2) {
for (JTextField felt : txtfeltNummer) {
felt.setText("");
felt.setEditable(true);
}
JOptionPane.showMessageDialog(null,"Ugyldig, ikke et tall");
}
}
});
tekstfelt.setSize(100,100);
tekstfelt.putClientProperty("id ", Integer.valueOf(i));
txtfeltNummer.add(tekstfelt);
sudokuWindow.add(tekstfelt);
}
easy.addActionListener(this);
medium.addActionListener(this);
hard.addActionListener(this);
deleteGame.addActionListener(this);
sudokuWindow.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source.equals(easy) || source.equals(medium) || source.equals(hard)) {
for (JTextField felt : txtfeltNummer) {
felt.setText(randomNumber(1, 9));
felt.setEditable(true);
int removeNumbers = Integer.parseInt(randomNumber(0, 3));
if (source.equals(easy) && removeNumbers == 0) {
felt.setText("");
}
else if (source.equals(medium) && removeNumbers <= 1) {
felt.setText("");
}
else if (source.equals(hard) && removeNumbers <= 2) {
felt.setText("");
}
else {
felt.setEditable(false);
}
}
}
if (e.getSource().equals(deleteGame)) {
System.out.println("Delete Game");
for (JTextField felt : txtfeltNummer){
felt.setText("");
felt.setEditable(true);
}
}
}
public static String randomNumber(int min, int max) {
int randomNum = ThreadLocalRandom.current().nextInt(min, max + 1);
String randomNumString = Integer.toString(randomNum);
return randomNumString;
}
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.ActionEvent;
导入java.awt.event.ActionListener;
导入java.util.ArrayList;
导入java.util.concurrent.ThreadLocalRandom;
/**
*由Gaute于2017年1月30日创建。
*/
公共类分配03GUI扩展JFrame实现ActionListener{
ArrayList txtfeltNummer=新的ArrayList();
JMenuBar menuBar=新的JMenuBar();
JMenu fileMenu=新JMenu(“文件”);
JMenu newGame=新JMenu(“新游戏”);
JMenuItem easy=新的JMenuItem(“easy”);
JMenuItem中=新的JMenuItem(“中”);
JMenuItem硬=新JMenuItem(“硬”);
JMenuItem deleteGame=新JMenuItem(“删除游戏”);
公共分配03GUI(){
JFrame sudokuWindow=新的JFrame();
sudokuWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
sudokuWindow.setTitle(“数独”);
setLayout(新的GridLayout(9,0));
sudokuWindow.setSize(10001000);
菜单栏。添加(文件菜单);
添加(新游戏);
添加(删除游戏);
添加(简单);
newGame.add(中等);
newGame.add(硬);
sudokuWindow.setJMenuBar(menuBar);
JTextField-tekstfelt;//德克勒尔·瓦里贝伦·塞登·布鲁克斯·乌特诺为洛卡效力
对于(int i=0;i<81;i++){
Tekstfel=新的JTextField();
//---------------------------------------------------------这个测试<只想删除一个感觉用户写的
addActionListener(新的ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
字符串文本=((JTextField)e.getSource()).getText();
试一试{
整数.parseInt(文本);
System.out.println(“整数”);
}
捕获(NumberFormatException e2){
用于(JTextField毛毡:txtfeltNummer){
felt.setText(“”);
felt.setediate(true);
}
showMessageDialog(null,“Ugyldig、ikke和tall”);
}
}
});
Tekstfel.setSize(100100);
tekstfelt.putClientProperty(“id”,Integer.valueOf(i));
txtfeltNummer.add(tekstfelt);
sudokuWindow.add(Tekstfel);
}
简单。addActionListener(这个);
medium.addActionListener(this);
hard.addActionListener(这个);
deleteGame.addActionListener(此);
sudokuWindow.setVisible(true);
}
@凌驾
已执行的公共无效操作(操作事件e){
对象源=e.getSource();
if(source.equals(容易)| | source.equals(中等)| | source.equals(硬)){
用于(JTextField毛毡:txtfeltNummer){
felt.setText(随机数(1,9));
felt.setediate(true);
int-removeNumbers=Integer.parseInt(随机数(0,3));
if(source.equals(easy)&&removeNumbers==0){
felt.setText(“”);
}
否则,如果(source.equals(medium)&&removeNumbers在另一个站点的帮助下找到了答案,我所要做的就是改变
for(JTextField feel:txtfeltNummer)到JTextField feel=(JTextField)e.getSource()
你最好使用文档过滤器:这对我来说是新鲜事
tekstfelt.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String text = ((JTextField) e.getSource()).getText();
try{
Integer.parseInt(text);
System.out.println("An integer");
}
catch (NumberFormatException e2) {
for (JTextField felt : txtfeltNummer) {
felt.setText("");
felt.setEditable(true);
}
JOptionPane.showMessageDialog(null,"Ugyldig, ikke et tall");
}
}
});