[英]Better Methods for moving JButtons
I try to code software for my selfmade food order terminal and found a method to make it happen but it needs so much writing. 我尝试为自己的自制食品订购终端编写软件代码,并找到了实现此目标的方法,但是这需要大量的编写工作。 I think there might be a better way of doing this.
我认为可能会有更好的方法。
I code to serve max 100 customer and every one of them got there own Jpanel
in which they but there food ( JButtons
) in. For every possible single food item order I use one while loop. 我编写的代码最多可服务100个客户,每个客户都有一个自己的
Jpanel
,他们在那里可以Jpanel
食物( JButtons
)。对于每个可能的单个食物订单,我都使用while循环。
Well this way I need to write close to 100000 while
loops. 好吧,这样我需要写接近100000个
while
循环。
Maybe you guys have a suggestion to do this without so much code. 也许大家建议不要使用太多代码。
This is how 50 of these 100000 look like: 这是这100000个中的50个的样子:
gemüse.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Preis = Preis + gemüsepreis;
labelsumme.setText(String.valueOf(Preis));
while (kunde == 1) {
while (brgemü == 1) {gemüicon1.setVisible(false);Bestellpanel.add(gemüicon1);gemüicon1.setVisible(true);brgemü++;return; }
while (brgemü == 2) {gemüicon2.setVisible(false);Bestellpanel.add(gemüicon2);gemüicon2.setVisible(true);brgemü++;return; }
while (brgemü == 3) {gemüicon3.setVisible(false);Bestellpanel.add(gemüicon3);gemüicon3.setVisible(true);brgemü++;return; }
while (brgemü == 4) {gemüicon4.setVisible(false);Bestellpanel.add(gemüicon4);gemüicon4.setVisible(true);brgemü++;return; }
while (brgemü == 5) {gemüicon5.setVisible(false);Bestellpanel.add(gemüicon5);gemüicon5.setVisible(true);brgemü++;return; }
while (brgemü == 6) {gemüicon6.setVisible(false);Bestellpanel.add(gemüicon6);gemüicon6.setVisible(true);brgemü++;return; }
while (brgemü == 7) {gemüicon7.setVisible(false);Bestellpanel.add(gemüicon7);gemüicon7.setVisible(true);brgemü++;return; }
while (brgemü == 8) {gemüicon8.setVisible(false);Bestellpanel.add(gemüicon8);gemüicon8.setVisible(true);brgemü++;return; }
while (brgemü == 9) {gemüicon9.setVisible(false);Bestellpanel.add(gemüicon9);gemüicon9.setVisible(true);brgemü++;return; }
while (brgemü == 10) {gemüicon10.setVisible(false);Bestellpanel.add(gemüicon10);gemüicon10.setVisible(true);brgemü++;return; }
while (brgemü == 11) {gemüicon11.setVisible(false);Bestellpanel.add(gemüicon11);gemüicon11.setVisible(true);brgemü++;return; }
while (brgemü == 12) {gemüicon12.setVisible(false);Bestellpanel.add(gemüicon12);gemüicon12.setVisible(true);brgemü++;return; }
while (brgemü == 13) {gemüicon13.setVisible(false);Bestellpanel.add(gemüicon13);gemüicon13.setVisible(true);brgemü++;return; }
while (brgemü == 14) {gemüicon14.setVisible(false);Bestellpanel.add(gemüicon14);gemüicon14.setVisible(true);brgemü++;return; }
while (brgemü == 15) {gemüicon15.setVisible(false);Bestellpanel.add(gemüicon15);gemüicon15.setVisible(true);brgemü++;return; }
while (brgemü == 16) {gemüicon16.setVisible(false);Bestellpanel.add(gemüicon16);gemüicon16.setVisible(true);brgemü++;return; }
while (brgemü == 17) {gemüicon17.setVisible(false);Bestellpanel.add(gemüicon17);gemüicon17.setVisible(true);brgemü++;return; }
while (brgemü == 18) {gemüicon18.setVisible(false);Bestellpanel.add(gemüicon18);gemüicon18.setVisible(true);brgemü++;return; }
while (brgemü == 19) {gemüicon19.setVisible(false);Bestellpanel.add(gemüicon19);gemüicon19.setVisible(true);brgemü++;return; }
while (brgemü == 20) {gemüicon20.setVisible(false);Bestellpanel.add(gemüicon20);gemüicon20.setVisible(true);brgemü++;return; }
while (brgemü == 21) {gemüicon21.setVisible(false);Bestellpanel.add(gemüicon21);gemüicon21.setVisible(true);brgemü++;return; }
while (brgemü == 22) {gemüicon22.setVisible(false);Bestellpanel.add(gemüicon22);gemüicon22.setVisible(true);brgemü++;return; }
while (brgemü == 23) {gemüicon23.setVisible(false);Bestellpanel.add(gemüicon23);gemüicon23.setVisible(true);brgemü++;return; }
while (brgemü == 24) {gemüicon24.setVisible(false);Bestellpanel.add(gemüicon24);gemüicon24.setVisible(true);brgemü++;return; }
while (brgemü == 25) {gemüicon25.setVisible(false);Bestellpanel.add(gemüicon25);gemüicon25.setVisible(true);brgemü++;return; }
while (brgemü == 26) {gemüicon26.setVisible(false);Bestellpanel.add(gemüicon26);gemüicon26.setVisible(true);brgemü++;return; }
while (brgemü == 27) {gemüicon27.setVisible(false);Bestellpanel.add(gemüicon27);gemüicon27.setVisible(true);brgemü++;return; }
while (brgemü == 28) {gemüicon28.setVisible(false);Bestellpanel.add(gemüicon28);gemüicon28.setVisible(true);brgemü++;return; }
while (brgemü == 29) {gemüicon29.setVisible(false);Bestellpanel.add(gemüicon29);gemüicon29.setVisible(true);brgemü++;return; }
while (brgemü == 30) {gemüicon30.setVisible(false);Bestellpanel.add(gemüicon30);gemüicon30.setVisible(true);brgemü++;return; }
while (brgemü == 31) {gemüicon31.setVisible(false);Bestellpanel.add(gemüicon31);gemüicon31.setVisible(true);brgemü++;return; }
while (brgemü == 32) {gemüicon32.setVisible(false);Bestellpanel.add(gemüicon32);gemüicon32.setVisible(true);brgemü++;return; }
while (brgemü == 33) {gemüicon33.setVisible(false);Bestellpanel.add(gemüicon33);gemüicon33.setVisible(true);brgemü++;return; }
while (brgemü == 34) {gemüicon34.setVisible(false);Bestellpanel.add(gemüicon34);gemüicon34.setVisible(true);brgemü++;return; }
while (brgemü == 35) {gemüicon35.setVisible(false);Bestellpanel.add(gemüicon35);gemüicon35.setVisible(true);brgemü++;return; }
while (brgemü == 36) {gemüicon36.setVisible(false);Bestellpanel.add(gemüicon36);gemüicon36.setVisible(true);brgemü++;return; }
while (brgemü == 37) {gemüicon37.setVisible(false);Bestellpanel.add(gemüicon37);gemüicon37.setVisible(true);brgemü++;return; }
while (brgemü == 38) {gemüicon38.setVisible(false);Bestellpanel.add(gemüicon38);gemüicon38.setVisible(true);brgemü++;return; }
while (brgemü == 39) {gemüicon39.setVisible(false);Bestellpanel.add(gemüicon39);gemüicon39.setVisible(true);brgemü++;return; }
while (brgemü == 40) {gemüicon40.setVisible(false);Bestellpanel.add(gemüicon40);gemüicon40.setVisible(true);brgemü++;return; }
while (brgemü == 41) {gemüicon41.setVisible(false);Bestellpanel.add(gemüicon41);gemüicon41.setVisible(true);brgemü++;return; }
while (brgemü == 42) {gemüicon42.setVisible(false);Bestellpanel.add(gemüicon42);gemüicon42.setVisible(true);brgemü++;return; }
while (brgemü == 43) {gemüicon43.setVisible(false);Bestellpanel.add(gemüicon43);gemüicon43.setVisible(true);brgemü++;return; }
while (brgemü == 44) {gemüicon44.setVisible(false);Bestellpanel.add(gemüicon44);gemüicon44.setVisible(true);brgemü++;return; }
while (brgemü == 45) {gemüicon45.setVisible(false);Bestellpanel.add(gemüicon45);gemüicon45.setVisible(true);brgemü++;return; }
while (brgemü == 46) {gemüicon46.setVisible(false);Bestellpanel.add(gemüicon46);gemüicon46.setVisible(true);brgemü++;return; }
while (brgemü == 47) {gemüicon47.setVisible(false);Bestellpanel.add(gemüicon47);gemüicon47.setVisible(true);brgemü++;return; }
while (brgemü == 48) {gemüicon48.setVisible(false);Bestellpanel.add(gemüicon48);gemüicon48.setVisible(true);brgemü++;return; }
while (brgemü == 49) {gemüicon49.setVisible(false);Bestellpanel.add(gemüicon49);gemüicon49.setVisible(true);brgemü++;return; }
while (brgemü == 50) {gemüicon50.setVisible(false);Bestellpanel.add(gemüicon50);gemüicon50.setVisible(true);brgemü++;return; }
}
Kunde means customer in german. Kunde用德语表示客户。 For every single fooditem I got 100 of these codeblocks, and we have around 18 fooditems.
对于每个食物项,我都有100个这样的代码块,而我们大约有18个食物项。
I am not that familiar with Java UI classes, so I will use T
to mark the type of the gemüiconXX
objects. 我不太熟悉Java UI类,因此我将使用
T
标记gemüiconXX
对象的类型。 Besides that, here is at least a more-elegant way to address the matter: 除此之外,这里至少是一种更优雅的解决方法:
I'd use a Map to keep the icons: 我会使用地图保留图标:
Map<Integer, T> iconsMap = new HashMap<Integer, T>();
Then in the constructor or component initialization, I will write put the icons in the map. 然后在构造函数或组件初始化中,我将把图标写在地图上。 The idea is for this to happen once:
这个想法是一旦发生:
iconsMap.put(1, gemüicon1);
....
iconsMap.put(50, gemüicon50);
Then your "ugly" code will become this: 然后,您的“丑陋”代码将变为:
public void actionPerformed(ActionEvent e) {
Preis = Preis + gemüsepreis;
labelsumme.setText(String.valueOf(Preis));
while (kunde == 1) {
T gemüicon = iconsMap.get(brgemü++);
gemüicon.setVisible(false);
Bestellpanel.add(gemüicon);
gemüicon.setVisible(true);
return;
}
}
While is used when something should be repeated multiple times but not a fixed amount of. 当需要重复多次但不固定重复次数时使用。 Since you are returning in every while loop, what you want to use is either an if-statement or a switch-statement.
由于您要在每个while循环中返回,因此要使用的是if语句或switch语句。 Also in your case you probably want to store all
gemüicons
in an array or list and just access it using brgemü
as the index. 同样,在您的情况下,您可能希望将所有
gemüicons
存储在数组或列表中,并仅使用brgemü
作为索引对其进行访问。 That way you only would have a few lines of code. 这样,您将只有几行代码。
if(kunde == 1)
{
gemüsearray[brgemü].setVisible(false);
Bestellpanel.add(gemüsearray[brgemü]);
gemüsearray[brgemü].setVisible(true);
brgemü++;
return;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.