Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 进行了一个try-and-catch测试,以查找用户输入是否不是数字。需要帮助才能将一个JTextfield写入为空吗_Java_Try Catch_Jtextfield - Fatal编程技术网

Java 进行了一个try-and-catch测试,以查找用户输入是否不是数字。需要帮助才能将一个JTextfield写入为空吗

Java 进行了一个try-and-catch测试,以查找用户输入是否不是数字。需要帮助才能将一个JTextfield写入为空吗,java,try-catch,jtextfield,Java,Try Catch,Jtextfield,我的try-and-catch方法可以工作,并且能够确定所选JTextField的文本输入是否为数字。( 当它不是一个数字时,文本应该被删除,并给出一条消息,说明它不是一个数字,但到目前为止,我只能通过使用for循环删除所写的文本。这将删除所有JTextFields上的所有文本。我只需要删除用户刚刚编写的一个。我还没有找到一种正确的方法,将for循环所做的事情以一种只删除一次文本的方式放置 这是一个数独游戏,所以它有81个文本字段 您可以在最概括的部分找到测试,上面有以下注释: //------

我的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");
                    }
                }
            });