我试图用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的新手,因此看起来很混乱。 谢谢。
答案 0 :(得分: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。
这里的第二个问题将与你的应用程序的设计有关:创建1,000,000个JButton实例是没有意义的。
它会:
更有可能的是,您希望在屏幕上的任何给定时间根据需要创建尽可能多的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
。