单击jButton后如何在jTextField中显示“结果”?

时间:2017-10-25 02:05:41

标签: swing jbutton jtextfield

在这个二进制到十进制转换器中,如何向第二个jTextField显示十进制结果/异常抛出?

用户在第一个jTextField中输入二进制数。然后在单击“转换”按钮后,程序应以其十进制形式输出该数字。或者如果有任何非法字符(除了0或1之外),它将在jTextField中显示错误消息。

我已经掌握了所有方法,并且我知道他们正确地响应了“转换”按钮,因为当您在“二进制”jTextField中输入类似“0101b”的内容时,它会抛出正确的错误。

我的问题是,我不知道如何在第二个jTextField中显示结果/错误。我正在使用包含main方法的驱动程序方法。任何提示都非常感谢。

编辑:我认为问题在actionPerformed类中。我正在尝试更改storeString1的值(使用setText()/ getText()),具体取决于传递的测试,但检查它们也很麻烦,因为我正在尝试使用int(parseBinary)测试JTextField, boolean(isBinary)和另一个int(非法)。

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

public class second extends JFrame implements ActionListener{

private JLabel enterString1, enterString2;
private JTextField string1, string2;
private JButton click;
private String storeString1 = "";

public second(){
    setLayout(null);
    setSize(450,180);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    enterString1 = new JLabel("Binary: ");
    enterString2 = new JLabel("Decimal: ");
    click = new JButton("Convert");
    string1 = new JTextField();
    string2 = new JTextField();

    enterString1.setBounds(90, 25, 120, 30);
    enterString2.setBounds(90, 60, 120, 30);
    string1.setBounds(210, 25, 200, 25);
    string2.setBounds(210, 60, 200, 25);
    click.setBounds(17,105,400,30);
    click.addActionListener(this);

    add(click);
    add(string1);
    add(string2);
    add(enterString1);
    add(enterString2);
}

public static int parseBinary(String binary) throws NumberFormatException
{
    if (!isBinary(binary))
    {
        throw new NumberFormatException("Invalid Format for a Binary String - Illegal character: " + illegal(binary));
    }
    int power = 0;
    int decimal = 0;
    for (int i = binary.length() - 1; i >= 0; i--)
    {
        if (binary.charAt(i) == '1')
        {
            decimal += Math.pow(2, power);
        }
        power++;
    }
    return decimal;
}

public static boolean isBinary(String binary)
{
    for (char ch : binary.toCharArray())
    {
        if (ch != '1' && ch != '0')
        {
            return false;
        }
    }
    return true;
}

public static char illegal(String iChar)
{
    char test = 0;
    char arr[] = iChar.toCharArray();
    for(char cha : arr)
    {
        if (cha != '1' && cha != '0')
        {
            test = cha;
        }
    }
    return test;
}

public void actionPerformed(ActionEvent e)
{
    if(e.getSource() == click) // if the button is clicked, do the following:
    {
        storeString1 = string1.getText();
        int a = parseBinary(storeString1);
        boolean bool = isBinary(storeString1);
        int b = illegal(storeString1);
        string2.setText(storeString1);
    }
}
}

这是我的主要方法:

public class driver 
{
public static void main(String[] args)
{
    second s = new second();
    s.setVisible(true);
}
}

0 个答案:

没有答案