Java GUI按钮不会将字符串打印到接口

Java GUI按钮不会将字符串打印到接口,java,string,user-interface,button,Java,String,User Interface,Button,这里是GUI初学者 我的问题不是创建GUI界面,而是让2个按钮在界面内的JTextArea中打印字符串。 第一个“学习”按钮从数组中获取一个随机元素并打印它。 第二个按钮“clear”在按下时只需打印一个字符串 我有两个按钮的动作监听器,但仍然不能完全得到它 谢谢你抽出时间 import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.Random; public class GUI ex

这里是GUI初学者

我的问题不是创建GUI界面,而是让2个按钮在界面内的JTextArea中打印字符串。
第一个“学习”按钮从数组中获取一个随机元素并打印它。 第二个按钮“clear”在按下时只需打印一个字符串 我有两个按钮的动作监听器,但仍然不能完全得到它

谢谢你抽出时间

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;


public class GUI extends JFrame {


String [] sentences = {"Random sentence 1", "random sentence 2", "random sentence 3", "random sentence 4", random sentence 5", "random sentence 6"};


private Container contents;
JButton learned = new JButton("Learned");
JButton clear = new JButton("Clear");
JTextArea clearDisplay;


public GUI()
{
    super ("GUI"); //title bar text

    contents = getContentPane ();
    contents.setLayout(new FlowLayout()); //make buttons appear

    //set the layout manager

    //instantiate buttons
    learned = new JButton("I Learned");
    clear = new JButton("Clear");

    //add components to window
    contents.add(learned);
    contents.add(clear);



    //instantiate event handler
    ButtonHandler bh = new ButtonHandler ();

    //add event handler as listener for both buttons
    learned.addActionListener (bh);
    clear.addActionListener(bh);

    setSize (400, 200); //size of window
    setVisible (true); //see the window

    }


   public class ButtonHandler implements ActionListener
   {
    //implement ActionPerformed method

    public void actionPerformed(ActionEvent e)
    {
        Container contentPane = getContentPane();
       if (e.getSource() == learned)
       {
         String random = (sentances[new Random().nextInt(sentances.length)]); //random from array           
         JTextArea learned = new JTextArea(random);
       }
       else if (e.getSource() == clear)           
       {
            JTextArea clearDisplay = new JTextArea("This is where it will display what I learned. \\nMessage Displayed Here.");
       }

    }

}

public static void main(String[] args)
{  
   GUI basicGui = new GUI (); 
   basicGui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //program exits on close                              
}

}
你的问题是:

else if (e.getSource() == clear)           
   {
        JTextArea clearDisplay = new JTextArea("This is where it will display what I learned. \\nMessage Displayed Here.");
   }
您正在创建一个从未添加到GUI的新JTextArea。你应该这样写:

else if (e.getSource() == clear)           
   {
        clearDisplay = new JTextArea("This is where it will display what I learned. \\nMessage Displayed Here.");
   }
并将其添加到GUI中

您还应该考虑另一种方法:首先创建JTextField,将其添加到GUI中,然后只更改上面代码中的文本

此外,这里还有一些拼写错误:

String random = (sentances[new Random().nextInt(sentances.length)]);
你的问题是:

else if (e.getSource() == clear)           
   {
        JTextArea clearDisplay = new JTextArea("This is where it will display what I learned. \\nMessage Displayed Here.");
   }
您正在创建一个从未添加到GUI的新JTextArea。你应该这样写:

else if (e.getSource() == clear)           
   {
        clearDisplay = new JTextArea("This is where it will display what I learned. \\nMessage Displayed Here.");
   }
并将其添加到GUI中

您还应该考虑另一种方法:首先创建JTextField,将其添加到GUI中,然后只更改上面代码中的文本

此外,这里还有一些拼写错误:

String random = (sentances[new Random().nextInt(sentances.length)]);

不要在动作侦听器中创建新的JTextArea。与其在GUI的构造函数和监听器中创建一个JTextArea,不如通过调用
.setText(…)
.append(…)将适当的文本写入JTextArea
如果要在现有文本中添加其他文本。

不要在动作侦听器中创建新的JTextArea。与其在GUI的构造函数和监听器中创建一个JTextArea,不如通过调用
.setText(…)
.append(…)将适当的文本写入JTextArea
如果要向现有文本添加其他文本。

添加了公共JTextArea textArea=new JTextArea();给构造器。并在组件部分添加内容。添加(文本区域);然后动作事件添加textArea.setText(随机);和textArea.setText(“此…”);它写道!非常感谢!新增公共JTextArea textArea=新JTextArea();给构造器。并在组件部分添加内容。添加(文本区域);然后动作事件添加textArea.setText(随机);和textArea.setText(“此…”);它写道!非常感谢!