使用GUI打印字符串

时间:2018-12-20 05:51:58

标签: java

我是Java新手。我正在家里练习,以提高我的计算机科学课的水平,并且在尝试编写某些代码时遇到麻烦。下面粘贴的代码应该打印“ Joketeller”类的“ public static void associate()”中找到的五个选项之一。但是,当我运行GUI并单击按钮对其进行测试时,应该在其中显示响应的文本框不会执行任何操作。

public class GUIWindow extends JFrame {
private Joketeller robot= new Joketeller();
private JLabel speakerlabel = new JLabel("Joke");
private JLabel MarcoLabel= new JLabel ("Marco");
private JTextField speakerfield= new JTextField ("Enter Joke Here");
private JTextField Marcofield= new JTextField ("");
private JButton Jokebutton=new JButton("Recite Joke >>>");

public GUIWindow()  {
    JPanel dataPanel= new JPanel(new GridLayout(6,2,12,16));
    dataPanel.add(speakerlabel);
    dataPanel.add(MarcoLabel);
    dataPanel.add(speakerfield);
    dataPanel.add(Marcofield);

    JPanel buttonPanel= new JPanel();
    buttonPanel.add(Jokebutton);
    Container container = getContentPane();
    container.add(dataPanel,BorderLayout.CENTER);
    container.add(buttonPanel,BorderLayout.SOUTH);
    Jokebutton.addActionListener(new JokeListener());
}

    private class JokeListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
        String input=speakerfield.getText();
        robot.setJoke(input);
        String Response= Joketeller.getResponse();
        Marcofield.setText(Response);


        }
        }
    }

这是我的Joketeller课:

public class Joketeller {


    private static String Marco;
    private static String Response;
    static int i= (int)(Math.random()*((5-1)+1))+1;
    static String r;

    public void setMarco(String Joke ) {
        Marco=Joke;
    }

    public void setJoke(String Joke) {
        Marco=Joke;
    }


    public String getJoke() {
        return Marco;
    }

    public static String getMarco() {
        return Marco;
    }

        public static void associate(){
        if(i==1) 
            r= "Connect Angie";
        else if(i==2)
            r= "*Cloud Laugh*";
        else if(i==3)
            r= "Community";
        else if(i==4)
            r=getMarco();
        else if(i==5)
            r= "Indeed!";
        Response=r;

        }

    public static String getResponse() {
        return Response;
    }

    }

任何帮助将不胜感激。谢谢。

2 个答案:

答案 0 :(得分:1)

请检查以下链接:

http://leepoint.net/notes-java/GUI/components/30textfield/11textfield.html

基本上也应该这样做

JTextField myOutput =新的JTextField(16);

myOutput是您选择JTextField变量的位置,而16是GUI中JTextField的长度。要显示消息:

myOutput.setText(“某些文本”); 您还可以在声明文本字段的同时初始化JTextField的值

JTextField myOutput =新的JTextField(“ someInitialValue”,20); 该代码说明一切

希望这会有所帮助

答案 1 :(得分:0)

例如,在调用robot.setJoke(input);时,您需要在某个地方关联associate()执行。

按如下所示修改Joketeller类,然后输出。

public void setJoke(String Joke) {
        associate();
        Marco=Joke;
    }