在我的游戏第3部分中实现从另一个类更改JLabel的方法?

时间:2014-06-09 04:24:55

标签: java swing oop jbutton actionlistener

我目前无法更改choiceDeclaration JLabel。我对选择声明JLabel的看法是简单地根据点击哪个JButton来显示文本。

这是我目前的项目代码:

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;

import java.awt.event.*;

public class prompt {       
    public static void main(String []args) {

        /* Setting up the JPanel and its necessities for this program */    

        JFrame choicePrompt = new JFrame("Rock, Paper, Scissors Game");
            JPanel choicePanel = new JPanel();
            JButton rockButton = new JButton("ROCK");
            JButton scissorsButton = new JButton("SCISSORS");
            JButton paperButton = new JButton("PAPER");
            JLabel choiceDeclaration = new JLabel();

        choicePrompt.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        choicePrompt.setResizable(false);
        choicePrompt.setSize(300, 300);
        choicePrompt.setVisible(true);
        choiceDeclaration.setVisible(true);

        choicePrompt.add(choicePanel);
        choicePanel.add(choiceDeclaration);
        choicePanel.add(rockButton);
        choicePanel.add(scissorsButton);
        choicePanel.add(paperButton);

        choiceDeclaration.setVerticalTextPosition(JLabel.TOP);
        choiceDeclaration.setHorizontalTextPosition(JLabel.CENTER);

        /* ActionListeners for the JButtons */

        rockButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
              /*I have not placed any code in here because I have not gotten that far*/
            }
        });

        scissorsButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e)
            {
               /*I have not placed any code in here because I have not gotten that far*/
            }               
        });

        paperButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) 
            {
               /*I have not placed any code in here because I have not gotten that far*/
            }   
        }); 
    }
}

我不能在我的ActionListeners中使用setText方法,如下所示,因为它与我的主类方法在我的类声明下面的一行冲突。他们都在参数中使用String。

public static void main(String []args) {

    rockButton.addActionListener(new ActionListener() {
        setText(String text) {
        }
    }
}

我的总结思想是创建另一个可以使用setText方法更改该帧上的JLabel的类。但是,由于JLabel不能像变量或方法一样从一个类调用到另一个类,因此我无法尝试实现这个想法。

1 个答案:

答案 0 :(得分:0)

有一个单独的方法......

public static void settext() {
    setText(String text)
}

然后在你的动作监听器中调用它......

rockButton.addActionListener(new ActionListener() { 
            public void actionPerformed(ActionEvent e) { 
                settext();
            } 
        });

我希望这就是你的意思! :)