GUI не обновится - PullRequest
       2

GUI не обновится

0 голосов
/ 11 декабря 2011

Я работаю над текстовой простой ролевой игрой для моего экзамена, но у меня возникли некоторые проблемы с моим графическим интерфейсом.

Когда игрок регистрируется, он может потратить несколько очков атрибута в 3 категориях. Графический интерфейс запрограммирован на отображение кнопки «Повышение силы» и т. Д., Если у игрока есть какие-либо атрибутные очки.

И это работает круто, но потом, когда игрок нажимает на кнопку повышения, для него берется точка атрибута, проблема в том, что графический интерфейс не обновляется.

if(Controller.player.getAttributePoints() > 0) {
        JLabel attriL = new JLabel("You have " + Controller.player.getAttributePoints() + " unspent Attribute points."); 
        attriL.setBounds(110, 30, 250, 30);
        hPanel.add(attriL);

        JButton setStrB = new JButton("Raise Strength");
        setStrB.setBounds(125, 60, 200, 30);
        setStrB.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
             //   tabbedPane.removeAll();                    
                Controller.player.setAttributePoints(Controller.player.getAttributePoints()-1);
                Controller.player.setStrength(Controller.player.getStrength()+1);

                gameCtn.validate();
                gameCtn.repaint();
                System.out.println(Controller.player.getStrength());                    
            }
        });
        hPanel.add(setStrB);
}

Как вы можете видеть, я пытался использовать repaint и validate на своем контейнере, но безуспешно, также я пробовал на Frame и панели, кажется, ничего не работает? Я делаю что-то не так?

Thx

Ответы [ 2 ]

2 голосов
/ 11 декабря 2011

не ясно, если Контроллер ... не вызывал длительные и сложные такты, в основном (если вы удалите, а затем добавите новый JComponents) в GUI, тогда вы должны вызвать

revalidate();
repaint();// not required on all cases

простые демонстрации что происходит, что возможно или наиболее завершено здесь

1 голос
/ 11 декабря 2011

Извините за это.

У вас нет кода, который говорит о том, что кнопка невидима.

public void actionPerformed(ActionEvent evt) {
    ...
    if (whateverIsLeft < 1) {
        JButton src = (JButton)evt.getSource();
        src.setVisible(false);
    }

    attriL.setText("You have " + whateverIsLeft + " attribute points left");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...