Java Можно ли получить имя переменной jButton? - PullRequest
0 голосов
/ 06 апреля 2020

Я не могу придумать другой способ сделать это. Я пытаюсь получить имя переменной кнопки java, которую я уже объявил, чтобы я мог l oop через базу данных (в которой есть экранное поле для доступа к нужному продукту) и установить нужный текст для этого JButton. Я могу сделать это, вручную установив каждый текст jButtons или установив жестко кодированный текст через Netbeans GUI. Но я искал, есть ли более эффективный способ сделать это.

Код, который может достичь этого

    ArrayList<Products> myList = myProductsDataHandler.getAllProducts();
    myList.forEach((var i) ->
    {
        if (i.getScreen() == 0)
        {
            btnProduct1.setText(i.getProductName());
        }
        else if (i.getScreen() == 1)
        {
            btnProduct2.setText(i.getProductName());
        }
        else if (i.getScreen() == 2)
        {
            btnProduct3.setText(i.getProductName());
        }
        else if (i.getScreen() == 3)
        {
            btnProduct4.setText(i.getProductName());
        }
        else if (i.getScreen() == 4)
        {
            btnProduct5.setText(i.getProductName());
        }
        else if (i.getScreen() == 5)
        {
            btnProduct6.setText(i.getProductName());
        }
        else if (i.getScreen() == 6)
        {
            btnProduct7.setText(i.getProductName());
        }
        else if (i.getScreen() == 7)
        {
            btnProduct8.setText(i.getProductName());
        }
        else if (i.getScreen() == 8)
        {
            btnProduct9.setText(i.getProductName());
        }

Код Мне нужна помощь с

        int btnInt = 1;
        String btnStr = "btnProduct";
        btnCatagory1.setText(i.getCategory());
        Component[] components = pnlOrder.getComponents();
        for(Component component : components)
        {
            if(component instanceof JButton)
            {
                System.out.println(btnStr+btnInt);
                JButton button = (JButton) component;
                System.out.println(button.getName());
                if (button.getName().contains(btnStr+btnInt))
                {
                    btnProduct1.setText(i.getProductName());
                    btnInt++;
                }
            }
            }
        });

Это система Epos, и когда программа выполняется, я хочу получить текст из базы данных и установить для нее нужные кнопки. Всего 9 кнопок. Я попытался getName (), но он возвращает ноль. Есть ли еще что-нибудь, чего я могу достичь? Спасибо

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Когда вы создаете свои кнопки, вы также можете добавить каждую кнопку к ArrayList:

List<JButton> buttons = new ArrayList<JButton>();
buttons.add(btnProduct1);
buttons.add(btnProduct2);

Затем, когда вы хотите обновить текст на кнопке, вы просто используете:

JButton button = buttons.get( i.getScreen() );
button.setText( i.getProductName() );
1 голос
/ 06 апреля 2020

Вы использовали setText (), поэтому должны использовать getText ().

Если бы вы использовали setName (), вы бы использовали getName ().

https://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/AbstractButton.html#getText ()

...