更好的移动JButton的方法

时间:2017-05-26 16:17:23

标签: java

我尝试为我的自制食品订单终端编码软件 找到了一种方法来实现它,但它需要这么多的写作。 我认为可能有更好的方法来做到这一点。

我代码为最多100位客户提供服务,他们每个人都有自己的Jpanel,但他们只有食物(JButtons)。对于每个可能的单一食品订单,我使用一个while循环。

这样我需要编写接近100000个while循环。

也许你们有一个建议,没有那么多代码就可以做到这一点。

这就是这些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意味着德语客户。 对于每一个食物项目,我都有100个这样的代码块, 我们有大约18种食品。

2 个答案:

答案 0 :(得分:0)

我不熟悉Java UI类,因此我将使用T来标记gemüiconXX对象的类型。除此之外,至少有一种更优雅的方式来解决这个问题:

我会使用地图来保存图标:

Map<Integer, T> iconsMap = new HashMap<Integer, T>();

然后在构造函数或组件初始化中,我将把图标放在地图中。这个想法是为了发生一次:

iconsMap.put(1, gemüicon1);
....
iconsMap.put(50, gemüicon50); 

那么你的“丑陋”代码就会变成这样:

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; 
    }
}

答案 1 :(得分:0)

当某些东西应该重复多次而不是固定量的时候使用。由于您在每个while循环中返回,因此您要使用的是if语句或switch语句。同样在您的情况下,您可能希望将所有gemüicons存储在数组或列表中,并使用brgemü作为索引来访问它。这样你只需要几行代码。

if(kunde == 1)
{
   gemüsearray[brgemü].setVisible(false);
   Bestellpanel.add(gemüsearray[brgemü]);
   gemüsearray[brgemü].setVisible(true);
   brgemü++;
   return;
}