如何在java swing

时间:2016-04-26 10:17:34

标签: java swing

我是编程的初学者。我正在搞乱java swing,并试图制作一个愚蠢的应用程序。这是我的代码。它没有显示任何错误,但它无法正常工作。弹出对话框时,变量的值不会显示在对话框中。我使用的逻辑是正确的,因为当我在编译器中运行它时没有GUI的东西,它完美地工作。如果有人能说出我在这里做错了什么,那将非常有帮助。

这是我的计算代码。

import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;

public class swingApp extends JFrame{
    JLabel label;
    JButton button;
    public JLabel label2;
    JTextField textField = new JTextField("enter you nicknamae");
    String username=textField.getText();
    public int geniusMeter;
    public int sum=0;
    public String sumAsString;
    public void swingAppLogic(String name){
        char[] letters = username.toCharArray();
        char [] alphabet={'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        int [] measure={7,3,1,13,8,26,15,18,2,5,22,20,16,9,5,11,23,12,25,6,4,21,24,14,17,10};

        for(int count=0;count<letters.length;count++){
            for (int count1=0;count1<alphabet.length;count1++){
                if (letters[count]==alphabet[count1]){
                    geniusMeter=measure[count1];
                    sum=sum+geniusMeter;
                    break;
                }
            }
        }
        sumAsString = Integer.toString(sum);

    }

    public swingApp(){
        super("Genius Calculator");
        setLayout(new FlowLayout());
        label = new JLabel("Wanna know how genius you are?"); 
        label2 = new JLabel(" ");
        button = new JButton("press enter and then click me to know the results");
        handlerClass handler = new handlerClass();
        button.addActionListener(handler);
        add(label);
        add(label2);
        add(button);
        add(textField);
    }
    public class handlerClass implements ActionListener{
        public void actionPerformed(ActionEvent event){
            JOptionPane.showMessageDialog (null, sumAsString, "Title", JOptionPane.INFORMATION_MESSAGE);

        }
    }
}

这是我的主要方法

import javax.swing.JFrame;

public class swingAppTester{
    public static void main (String [] args){
        swingApp object=new swingApp();

        object.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        object.setSize(500,400);
        object.setVisible(true);
    }
}

1 个答案:

答案 0 :(得分:0)

您需要在按钮的swingAppLogic(String name) - 方法中使用您的方法actionPerformed()

public class handlerClass implements ActionListener{
    public void actionPerformed(ActionEvent event){
      swingAppLogic(textField.getText());
        JOptionPane.showMessageDialog (null, sumAsString, "Title", JOptionPane.INFORMATION_MESSAGE);
    }
}

另一个问题是,你的总和每次运行都会变得越来越大。您需要在每次开始时将其重置为0:

public void swingAppLogic(String name){
    sum = 0;
    char[] letters = username.toCharArray();

如果您对编码标准有所了解,它对您也会有所帮助。例如,类名应以大写字母开头,以阻止代码混淆。当你拥有超过一小部分时,命名一个JLabel label会让你感到非常困惑。

HTH!

PS:你计算天才和的逻辑似乎总是输出相同的150?

<强> [编辑]:

您正在尝试从用户输入的文本字段中获取名称。但是你在错误的时间这样做,而文本字段仍然包含&#34;输入你的昵称&#34;。因此,而不是username.toCharArray()使用name.toCharArray()。然后不再需要变量username