点击它后如何更新JButton的文本?

时间:2015-02-01 09:55:48

标签: java swing refresh jbutton jlabel

我认为有一种比从JPanel中删除每个元素并重新制作它们更好的方法,因为这是我的解决方法,但现在很明显,当点击按钮时,它会被告知要删除它以便动作永远不会完成。

这是我添加按钮动作监听器的糟糕代码:

// Add action listener to increment quest progress when button is pushed
        listOfButtons[i].addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                questList[temp].incrementNumerator(1);
                refreshButtons();
            }
        });

这是我刷新JButtons的糟糕代码:

// Use when updating data that a JButton displays, destroys & recreates all     JButtons on the window
private void refreshButtons() {
    for (int i = 0; i < listOfButtons.length; i++) {

        // Remove each JButtons from the JFrame
        contentPane.remove(listOfButtons[i]);
    }
    addButtons();
}

1 个答案:

答案 0 :(得分:2)

您可以从JButton本身获取ActionEvent引用。

listOfButtons[i].addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        questList[temp].incrementNumerator(1);
        ((JButton) e.getSource()).setText(questList[temp].getValue());
    }
});

我以questList[temp].getValue()为例。你显然会传递适用于你的程序的内容。