我的GUI编程与Java中的递归集成有点帮助

时间:2015-10-20 01:05:19

标签: java recursion applet awt

我需要一些Java程序的帮助。我的程序使用GUI界面从用户那里获取第n个术语;然后计算该术语的斐波那契数,并将其打印在界面中。请看看我的计划。我想知道两件事:

  1. 如何将变量分配给 fib 函数中的返回值?
  2. 将变量设置为返回值后,我想在actionPerformed方法中访问该变量,因此我可以将其打印到界面。
  3. 程序

    import java.applet.*;
    import java.awt.*;
    import java.awt.event.*;
    
    public class GUIwithRecursion extends Applet implements ActionListener
    {
    public static TextField numberTF = new TextField ();
    public static TextField fibTF    = new TextField();
    
    int result = fib(numberN);
    
    public void init()
    {
    setBackground(Color.magenta);
    Label     numberLB = new Label("n= ");
    Button    calcBN   = new Button("Calculate");
    Label     fibLB    = new Label("fib(n)= ");
    
    setLayout(null);
    numberLB.setBounds(10, 30, 100, 20);
    numberTF.setBounds(10, 50, 100, 20);
    numberTF.setBackground(Color.yellow);
    fibLB.setBounds(10, 70, 100, 20);
    fibTF.setBounds(10, 90, 100, 20);
    fibTF.setBackground(Color.red);
    calcBN.setBounds(10, 110, 100, 20);
    
    add(numberLB);
    add(numberTF);
    add(fibLB);
    add(fibTF);
    add(calcBN);
    
    calcBN.addActionListener(this);
    }
    
    public static int fib(int numberN)
    {
        if (numberN<=1)
        {return 1;}
    
        else
        {return fib(numberN-1)+fib(numberN-2);}
    }
    
    public void actionPerformed(ActionEvent e)
    {
    
        int result = fib(numberN);
        fibTF.setText(Integer.toString(result));
    
    }
    }
    

1 个答案:

答案 0 :(得分:1)

  

1)如何为fib函数中的返回值赋值?

int number = Integer.parseInt(numberTF.getText());
int result = fib(number);
  

2)将变量设置为返回值后,我想在actionPerformed函数中访问该变量,因此我可以将其打印到界面。

更好的解决方案是在actionPerformed方法

中执行计算
public void actionPerformed(ActionEvent e) {
    int number = Integer.parseInt(numberTF.getText());
    int result = fib(number);
    fibTF.setText(Integer.toString(result));
}

下一个问题是,为什么Applet以及AWT库的原因?两者都被Swing(现在是JavaFX)所取代,现在大多数浏览器都会主动阻止applet。

您通常会获得对Swing和JavaFX的更好支持,现在大多数人都在使用这些库来开发纯AWT

避免使用null布局,像素完美布局是现代ui设计中的一种幻觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正

请查看Laying Out Components Within a Container了解详情