Java函数/ GUI

时间:2016-09-05 10:00:35

标签: java

我试图用GUI制作一个计算器,我发现我将不得不重复几百万次JButton代码,所以我决定改成一个函数,但我不能做一个功能。这就是我做的事情

public static void button(String name, int size1, int size2, int loc1, int loc2) {
    JButton l=new JButton(name);
    l.setSize(size1, size2);
    l.setLocation(loc1, loc2);
    }

在主要内部,我做了这个

myForm.add(button("5", 20, 20, 20, 20));

确定声明myForm之后,我一直收到此错误: 参数类型Container中的方法add(Component)不适用于参数(void)

我是函数和java的新手,因此看起来很混乱。 谢谢。

2 个答案:

答案 0 :(得分:1)

第1期

首先,关于你的错误:

  

Container类型中的方法add(Component)不适用于参数(void)

你的button()方法返回一个void,你必须让它返回对象:

public static JButton button(String name, int size1, int size2, int loc1, int loc2) {
  JButton l=new JButton(name);
  l.setSize(size1, size2);
  l.setLocation(loc1, loc2);
  return l;
}

myForm.add()期望传递一个Component,因此您只需返回由助手button()方法创建的JButton。

第2期

这里的第二个问题将与你的应用程序的设计有关:创建1,000,000个JButton实例是没有意义的。

它会:

  • 吃掉你的记忆,
  • 在UI / UX方面毫无用处。

更有可能的是,您希望在屏幕上的任何给定时间根据需要创建尽可能多的JButton,并根据您想要的操作重复使用这些JButton。

考虑到你的要求,我怀疑你想要尝试显示一个可以与之交互的非常大的物体网格(例如巨型扫雷,生命游戏或生物模拟可能吗?)。如果是这种情况,很可能你会想自己绘制对象并自己处理事件以减少开销。

答案 1 :(得分:1)

您需要返回JButton

public static JButton button(String name, int size1, int size2, int loc1, int loc2) {
    JButton button = new JButton(name);
    button.setSize(size1, size2);
    button.setLocation(loc1, loc2);
    return button;
}

我还建议对该方法使用更明确的名称,例如: createButton