我需要一些Java程序的帮助。我的程序使用GUI界面从用户那里获取第n个术语;然后计算该术语的斐波那契数,并将其打印在界面中。请看看我的计划。我想知道两件事:
actionPerformed
方法中访问该变量,因此我可以将其打印到界面。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));
}
}
答案 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旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正