简体   繁体   English

移动JButton的更好方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM