Java GUI 仅接受某些名称

标签 java swing user-interface

我目前正在开发一个 GUI,您可以在其中输入您的姓名,它会告诉您该姓名是否已被接受。假设如果输入名称“John”或“Jane”,那么如果您输入任何其他名称,您会收到“已验证”消息或“未验证”消息。这是我到目前为止所拥有的,只是不确定如何添加 IF 语句来检测某些名称。谢谢。

NamePrompt.java

import java.awt.BorderLayout;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class NamePrompt extends JFrame{

    private static final long serialVersionUID = 1L;

    String name;

    public NamePrompt(){

        setLayout(new BorderLayout());

        JLabel enterYourName = new JLabel("Enter Your Name Here:");
        JTextField textBoxToEnterName = new JTextField(21);
        JPanel panelTop = new JPanel();
        panelTop.add(enterYourName);
        panelTop.add(textBoxToEnterName);

        JButton submit = new JButton("Submit");
        submit.addActionListener(new SubmitButton(textBoxToEnterName));
        JPanel panelBottom = new JPanel();
        panelBottom.add(submit);

        //Add panelTop to JFrame
        add(panelTop, BorderLayout.NORTH);
        add(panelBottom, BorderLayout.SOUTH);

        //JFrame set-up
        setTitle("Name Prompt Program");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        pack();
        setLocationRelativeTo(null);

   }

    public static void main(String[] args) {
        NamePrompt promptForName = new NamePrompt();
        promptForName.setVisible(true); 
    }

}

SubmitButton.java

import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;


public class SubmitButton implements ActionListener {

    JTextField nameInput;

    public SubmitButton(JTextField textfield){
        nameInput = textfield;
    }

    @Override
    public void actionPerformed(ActionEvent submitClicked) {
        Component frame = new JFrame();
        JOptionPane.showMessageDialog(frame , "You've Submitted the name " + nameInput.getText() + " which is allowed.");
    }


}

最佳答案

正如另一个答案中提到的,这应该在 actionPerformed 方法中处理。但是,根据您向社区展示的内容,以下内容应该可行;

如果名称区分大小写,则修改如下:

public SubmitButton(JTextField textfield){
    nameInput = textfield;
    if (nameInput.equals("InsertCaseSensitiveName")) {
        //TODO: Verified Name
    } else {
        //TODO: Unverified Name
    }
}

如果不区分大小写:

public SubmitButton(JTextField textfield){
    nameInput = textfield;
    if (nameInput.equalsIgnoreCase("InsertCaseSensitiveName")) {
        //TODO: Verified Name
    } else {
        //TODO: Unverified Name
    }
}

使用列表:

//initialize your list (formed so backwards compatible)
List<String> valid = new java.util.concurrent.CopyOnWriteArrayList<String>();
//Within a function, add all names to the list in lowercase (java.lang.String.toLowerCase())

    public SubmitButton(JTextField textfield){
        nameInput = textfield;
        if (valid.contains(nameInput.toLowerCase()) {
            //TODO: Verified Name
        } else {
            //TODO: Unverified Name
        }
    }

引用文献:

conditional if statements

java.lang.String.equals

java.lang.String.equalsIgnoreCase

java.lang.String.toLowerCase

java.util.List

java.util.concurrent.CopyOnWriteArrayList

关于Java GUI 仅接受某些名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29945905/

相关文章:

java - 如何多次创建新的和处置jcomponents?

multithreading - Cocoa 中的多个 UI 线程

java - 如何知道用户何时真正释放了Java中的 key ?

java - 如何在生效日期更新用户?

java - 带有 RestEasy 和 FileServer 的 Netty

java - 在 Servlet 类中创建方法是一种不好的做法吗?

java - Swing , JTree 遍历 , 枚举器警告

java - 汽车/移动 PC 平台是否需要基于触摸屏的 UI?

qt - 如何使小部件溢出以使滚动条出现在 Qt 中?

java - JTable 和 getInputMap - 仅适用于一个键?