我只是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;
}
}
答案 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);
}