我是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;
}
}
任何帮助将不胜感激。谢谢。
答案 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;
}