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

JAVA GUI:Textfields只接受数字输入

江睿
2023-03-14

我是JAVA的新手,文本字段是否可以只接受数字输入?是否也有可能在代码内部有一个等式?例如:(毛额*10)

下面是我希望有数值输入的代码://Display private class Handler implements ActionListener{public void actionPerformed(ActionEvent e){

String name = fName.getText();
String email = fEmail.getText();
String movie = fMovie.getText();
String role = fRole.getText();
String salary = fSalary.getText(); // < I WANT THIS TO VARIABLE TO BE DOUBLE
String gross = fGross.getText(); // < SO THIS ASWELL

JOptionPane.showMessageDialog(null,"Name: " + name +"\n Email: " +email +"\n Movie: " +movie +"\n Role: " +role +"\n Salary: " +salary +"\n Gross: " +gross);

}   
}


FULL CODE: 

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    
    public class Text1 {
    static Container contain;
    static JFrame f;
    static JPanel p;
    static JLabel l,lblName,lblEmail,lblMovie,lblRole,lblSalary,lblGross;
    static JTextField fName,fEmail,fMovie,fRole,fSalary,fGross;
    static JButton submit;
    
    Handler h = new Handler();
    
    public static void main(String[] args) {
    new Text1();                
    }
    
    public Text1(){
    f = new JFrame("Movies");
    f.setLayout(null);
    contain = f.getContentPane();
    
    p = new JPanel();
    p.setLayout(null);
    p.setBounds(0,0,700,700);
    contain.add(p);
    
    l = new JLabel("<html>Write a program to accept the name, email address, latest movie, role, salary, box office gross. Display all the inputs and the bonus and total income.The total income came from the salary and the bonus which is the 10% of the box office gross.</html>");
    l.setBounds(10,5,670,100);
    p.add(l);
    //--Name
    lblName = new JLabel("Name: ");
    lblName.setBounds(78,52,89,150);
    p.add(lblName);
    //--Email
    lblEmail = new JLabel("Email: ");
    lblEmail.setBounds(78,84,89,150);
    p.add(lblEmail);
    //--Movie
    lblMovie = new JLabel("Latest Movie: ");
    lblMovie.setBounds(78,116,130,150);
    p.add(lblMovie);
    //--Role
    lblRole = new JLabel("Role: ");
    lblRole.setBounds(78,148,89,150);
    p.add(lblRole);
    //--Salary
    lblSalary = new JLabel("Salary: ");
    lblSalary.setBounds(78,180,89,150);
    p.add(lblSalary);
    //--Gross
    lblGross = new JLabel("Gross: ");
    lblGross.setBounds(78,212,89,150);
    p.add(lblGross);
    
    //TextFields :3
    fName = new JTextField();
    fName.setBounds(217,117,150,20);
    p.add(fName);
    fEmail = new JTextField();
    fEmail.setBounds(217,147,150,20);
    p.add(fEmail);
    fMovie = new JTextField();
    fMovie.setBounds(217,180,150,20);
    p.add(fMovie);
    fRole = new JTextField();
    fRole.setBounds(217,213,150,20);
    p.add(fRole);
    fSalary = new JTextField();
    fSalary.setBounds(217,244,150,20);
    p.add(fSalary);
    fGross = new JTextField();
    fGross.setBounds(217,275,150,20);
    p.add(fGross);
    
    //Buttonerino
    submit = new JButton("Submit");
    submit.setBounds(78,310,80,20);
    submit.addActionListener(h);
    p.add(submit);
    
    f.setSize(710,710);
    f.setVisible(true);
    f.setResizable(false);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    
    //Display
    private class Handler implements ActionListener{
    public void actionPerformed(ActionEvent e){
    
    String name = fName.getText();
    String email = fEmail.getText();
    String movie = fMovie.getText();
    String role = fRole.getText();
    String salary = fSalary.getText();
    String gross = fGross.getText();
    
    JOptionPane.showMessageDialog(null,"Name: " + name +"\n Email: " +email +"\n Movie: " +movie +"\n Role: " +role +"\n Salary: " +salary +"\n Gross: " +gross);
    }   
    }
    
    }

共有1个答案

卓胜
2023-03-14
formatText = new JFormattedTextField(createFormatter("######"));
        formatText.setColumns(20);

此示例只允许用户输入数字。我把它设置为只允许6位数字,但你可以用更多或更少的#来改变那个数字。

您也可以进行计算并将答案分配给文本字段

 类似资料:
  • 我正在开发一个数独小程序,我想制作它的单元格(扩展JTextField),以便它只接受0-9和长度为1之间的整数。稍后我会对它进行更多限制(以便它符合游戏规则)。我从: 在这里,我试图过滤输入,对于开始,我只是试图将其限制为整数和一个数字,但似乎我可以输入任意多的数字,而最后一行不会被触发。 想在这里得到一些帮助,谢谢:

  • 验证器 当我插入一位数字时,验证器工作正常,并显示消息“最小长度2数字”。但是,当我插入一些字母而不是像“EEE3”这样的数字时,验证器会显示以下消息:“num1:'EEE3'必须是一个介于-2147483648和2147483647之间的数字。例如:9346”,而它应该显示“仅数字字符”。 我做错了什么?

  • 我希望我的文本字段只接受数字(数字)和一个点,因为这是一个用户可以在其中写入产品价格的字段。我有这个代码,但它不能很好地工作,它只接受数字和删除。 有人能帮我修一下吗?

  • 我有一个网站,我想运行购物车功能的完整过程。一切顺利,直到我点击付款方式,选择借记卡和。在将数据放入字段时,它不接受。如何将数据放入字段中。以下是测试网站的链接:https://vapesuite.allomate.solutions/#/.下面是将数据输入字段的代码。

  • 我有一个只接受数字的mobileNumber正则表达式“[1-9][0-9]*”<但是我需要在开始时有一个可选的。但用户可能不会在开始时输入 例如9089098909 例如9089098909 例如919089098909 我最多可以接受13个字符<我正在做这个。谁能告诉我怎么解决这个问题吗?

  • 问题 你希望函数的某些参数强制使用关键字参数传递 解决方案 将强制关键字参数放到某个*参数或者单个*后面就能达到这种效果。比如: def recv(maxsize, *, block): 'Receives a message' pass recv(1024, True) # TypeError recv(1024, block=True) # Ok 利用这种技术,我们还能在接受