如何让我的方法一起工作

时间:2015-12-23 08:36:00

标签: java

我只是Java的初学者,所以我正在尝试用图形界面编写一些简单的程序。该程序的目的是计算用户打印的单词的gimatria值。要执行此操作,用户必须单击按钮。我不知道如何让我的方法一起工作。我在这里找到了很多关于方法调用的答案,但我真的不明白在我的情况下如何实现它们。 代码如下:

public class Gim {

public static void main(String[] args) throws IOException {

    new Display();

        }
}
public class Display extends JFrame {

private JButton execute;
private JTextArea result;
public JTextField word;

public Display () {

    sendTextArea();
    sendFrame();
    sendButton();

}

public void sendButton() {

    execute = new JButton();
    execute.setBounds(450, 90, 130, 30);
    execute.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            if(word.getText() != null){


            }
        }
    });
    add(execute);
}

public void sendTextArea() {
    result = new JTextArea();
    word = new JTextField();
    result.setBounds(100, 100, 100, 20);
    word.setBounds(300, 100, 100, 20);
    result.setEditable(false);
    word.setEditable(true);
    word.setFont(new Font( "Arial", Font.PLAIN, 10));
    result.setFont(new Font( "Arial", Font.PLAIN, 10));
    add(result);
    add(word);
}

 private void sendFrame() {

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setResizable(true);
    setSize(800, 600);
    setLocationRelativeTo(null);
    setLayout(null);
    setVisible(true);
 }
}
public class Count  {

public static int myMethod() throws IOException{

        String text;
        int sum = 0;
        for(int i = 0; i<text.length(); i++){
        char bukv=text.charAt(i);
        switch(bukv){
        case 'א':  sum += 1;
        break;
        case 'ב': sum += 2;
        break;
        case 'ג':  sum += 3;
        break;
        case 'ד':  sum += 4;
        break;
        case 'ה':  sum += 5;
        break;
        case 'ו':  sum += 6;
        break;
        case 'ז':  sum += 7;
        break;
        case 'ח':  sum += 8;
        break;
        case 'ט':  sum += 9;
        break;
        case 'י':  sum += 10;
        break;
        case 'כ':  sum += 20;
        break;
        case 'ל':  sum += 30;
        break;
        case 'מ':  sum += 40;
        break;
        case 'נ':  sum += 50;
        break;
        case 'ס':  sum += 60;
        break;
        case 'ע':  sum += 70;
        break;
        case 'פ':  sum += 80;
        break;
        case 'צ':  sum += 90;
        break;
        case 'ק':  sum += 100;
        break;
        case 'ר':  sum += 200;
        break;
        case 'ש':  sum += 300;
        break;
        case 'ת':  sum += 400;
        break;
            } 
        }
                return sum; 
    }   
 }

3 个答案:

答案 0 :(得分:0)

请注意,ActionListener是一个重写ActionPerformed方法的匿名类。这是您的计划中捕获&#39;用户交互。在这里,您需要调用计算用户输入的单词的gimatria值的方法。

您可以通过调用您编写的方法来实现:Count.myMethod()。但是,由于你的方法没有实际的用法,所以这还不够。因此,您应该通过添加形式参数来改进您的方法:myMethod(String word)。现在,您可以使用参数:Count.myMethod(word)从ActionPerformed方法调用/调用它。由于此方法产生结果,因此您需要捕获它:int total = Count.myMethod(word);.此结果需要显示在GUI中的指定文本字段中:result.setText(String.valueOf(result);

你应该得到类似的东西:

   execute.addActionListener(new ActionListener(){
        @Override
        public void actionPerformed(ActionEvent e) {
            if(word.getText() != null){
                int res = Count.myMethod(word.getText());
                result.setText(String.valueOf(res));
            }
        }
    });
    add(execute);

答案 1 :(得分:0)

我认为你想要做的是:

execute.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (word.getText() != null) {
                    try {
                        Count.myMethod();
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            }
        });

而不是:

execute.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (word.getText() != null) {

                }
            }
        });

您要执行的Button有一个空的EventHandler。通过将您的方法添加到事件处理程序,它将被执行。结果可以通过以下方式保存:Count.myMethod();int i = Count.myMethod();

您还应该向myMethod()添加一个参数,以便能够找到您要检查的文本。你可以这样做:

public static int myMethod(String toCompare) throws IOException{
    String text = toCompare;
    ...

然后调用该方法可以这样工作:

Count.myMethod(yourStringFromUI);

希望有所帮助!

答案 2 :(得分:0)

更改Count.myMethod以允许参数+删除“String text;”声明:

public static int myMethod(String paramText) throws IOException{...

从Display的ActionListener调用Count类,并创建一个处理结果的方法:

    public void actionPerformed(ActionEvent e) {
        if(word.getText() != null){
           display(Count.myMethod(word.getText()));
        }
    }

    public void display(int count){
      System.out.println(count);
    }