当前位置: 首页 > 知识库问答 >
问题:

为什么我的JOptionPane错误消息不会弹出?

蒋昊天
2023-03-14

我制作了一个GUI程序,它统计在主文本字段中输入的任何内容的某些元素。如果文本字段为空,则应弹出一条消息,说明用户应在文本字段中输入文本。我做了一个if语句,如果tfMain==null,JOptionPane消息应该会弹出,但由于某些原因它不会弹出。有没有关于为什么它不会弹出的提示?

这是我的代码:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;

public class LabExcer9 extends WindowAdapter implements ActionListener
{
    //Container
    private Frame f;
    private Panel p1,p2,p3;
    //Component
    private Button bReadAndComp, bClear;
    private TextField tfMain,tf1,tf2,tf3,tf4,tf5,tf6;
    private Label l1,l2,l3,l4,l5,l6;

    public LabExcer9()
    {
        f = new Frame("Character Counter of Miguel Martin");

        p1 = new Panel();
        p2 = new Panel();
        p3 = new Panel();

        bReadAndComp = new Button("Read and Compute");
        bClear = new Button("Clear ALL Values");

        tfMain = new TextField(null);
        tf1 = new TextField("0");
        tf2 = new TextField("0");
        tf3 = new TextField("0");
        tf4 = new TextField("0");
        tf5 = new TextField("0");
        tf6 = new TextField("0");

        l1 = new Label("Number of Words ");
        l2 = new Label("Number of Characters ");
        l3 = new Label("Number of Vowels ");
        l4 = new Label("Number of Consonants ");
        l5 = new Label("Number of Digits ");
        l6 = new Label("Number of Symbols and Spaces ");
    }

    public void assembleGUI()
    {
        p1.setLayout(new GridLayout(1,1));
        p1.setPreferredSize(new Dimension(200, 200));
        p1.add(tfMain);
        p2.setLayout(new GridLayout(6,2));
        p2.add(l1);
        p2.add(tf1);
        p2.add(l2);
        p2.add(tf2);
        p2.add(l3);
        p2.add(tf3);
        p2.add(l4);
        p2.add(tf4);
        p2.add(l5);
        p2.add(tf5);
        p2.add(l6);
        p2.add(tf6);
        p3.setLayout(new GridLayout(1,2));
        p3.add(bReadAndComp);
        p3.add(bClear);
        f.add(p1,BorderLayout.NORTH);
        f.add(p2,BorderLayout.CENTER);
        f.add(p3,BorderLayout.SOUTH);
        f.pack();
        f.addWindowListener(this);
        f.setVisible(true);

        //registers
        bReadAndComp.addActionListener(this);
        bClear.addActionListener(this);

    }

    public void windowClosing(WindowEvent we)
    {
        System.exit(0);
    }
    public void actionPerformed(ActionEvent ae)
    {
        Object source = ae.getSource();
        //gets main text
        String textString = tfMain.getText();
        //puts words into array

        int vowels = 0, consonants = 0, digits = 0, symbolsAndSpaces = 0;
        int characters = textString.length();
        if(tfMain.getText() == "" || tfMain.getText() == null )
        {
            if(source == bReadAndComp)
                JOptionPane.showMessageDialog(null, "Please Enter Text!");
        }
        else if(tfMain.getText() != null && tfMain.getText() != "")
        {
            if(source == bReadAndComp)
            {
                for(int i = 0;i<textString.length();i++)
                {
                    if(Character.isDigit(textString.charAt(i)))
                        digits++;
                    if(Character.isLetterOrDigit(textString.charAt(i)) == false)
                        symbolsAndSpaces++;
                    if(isVowel(textString.charAt(i)) == true)
                        vowels++;
                    else if(Character.isDigit(textString.charAt(i)) == false && isVowel(textString.charAt(i)) == false && textString.charAt(i) != ' ' && Character.isLetter(textString.charAt(i)) == true)
                        consonants++;
                }
                tf1.setText(""+textString.split(" ").length);
                tf2.setText(""+characters);
                tf3.setText(""+vowels);
                tf4.setText(""+consonants);
                tf5.setText(""+digits);
                tf6.setText(""+symbolsAndSpaces);
                //System.out.println(textStringArray[0]+"wat");
                //JOptionPane.showMessageDialog(null, "Please Enter Text!");
            }
            else if (source == bClear)
            {
                tf1.setText("0");
                tf2.setText("0");
                tf3.setText("0");
                tf4.setText("0");
                tf5.setText("0");
                tf6.setText("0");
                tfMain.setText(null);
            }
        }

    }

    public boolean isVowel(char c)
    {
        if (c == 'a' || c == 'A' ||c== 'e' ||c == 'E' ||c == 'i' ||c == 'I' ||c == 'o' ||c == 'O' ||c == 'u' ||c == 'U')
            return true;
        else
            return false;
    }

    public static void main(String args [])
    {
        LabExcer9 GUI = new LabExcer9();
        GUI.assembleGUI();
    }
}

共有1个答案

姚宪
2023-03-14

要比较字符串,请使用equals或equalsIgnoreCase。

替换你的

if(tfMain.getText() == "" || tfMain.getText() == null ) 

声明如下:

if("".equals(tfMain.getText())){
}
 类似资料:
  • 我正在制作一个单位转换器,遇到了一个问题与JoptionPane.ShowMessageDialog代码是完整的,应该运行良好。 如果将两个转换单元都放到同一个单元,转换器将显示一个消息对话框。当消息窗口弹出,它说消息,然后一个确定按钮点击。当我单击Ok按钮时,它不会退出消息对话框。我从这个转换器的另一个更长的版本中为它复制了代码行,它可以很好地使用它。另外,如果你对如何做更好的数学有任何建议,请

  • 下面我描述更多关于我的问题。我知道Stackoverflow中还有其他线程,但我的问题尚未解决,因此我测试了大多数建议。 描述我使用Spring REST接口制作程序(见下面的代码),我在使用Maven编译代码时遇到了问题(见问题部分)。使用IDE Eclipse编译代码没有问题。 在Windows:mvn clean compile的命令行中使用Maven编译代码时出现问题:我收到错误消息:错误

  • 这也是基于我的最后一个问题。 按照本教程,我将项目克隆到我的机器中,并试图让项目正确构建。 在修复我在上一个问题中得到的错误的过程中,我遇到了一个新的错误。 这是我正在尝试修复/编辑的构建脚本的部分 按照如何检查Gradle版本的说明,我检查了我的版本,发现我正在运行Gradle版本2.2.1。基于此,我改变了 到 然而,在更改构建脚本代码并尝试重建我的项目后,我得到了上面提到的错误(下面是完整的

  • 我已经花了一个多小时试图解决这个问题,但我什么都没做。 当我试图使用Maven编译我的项目时,我得到了以下错误: [错误]无法执行目标组织。阿帕奇。专家插件:maven assembly插件:2.2-beta-5:single(默认cli)在GankALane项目上:无法解析mojo org的配置。阿帕奇。专家插件:maven assembly插件:2.2-beta-5:单参数存档:在组织中找不到

  • 很抱歉,我对Java知之甚少。我得到了这个代码来接管。基本上,我在 当我运行代码时。 下面是解析XML的块 这是Improts,不确定是否需要这样做 这是XML文件

  • 我正在做一个编码练习:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 所以我写了这段代码: 现在,这段代码似乎适用于大多数序列,但这段代码引发了一个错误: 错误如下: 我只是不明白列表索引怎么可能超出范围…有人有线索吗?