Java JTextArea不显示所需的文本

Java JTextArea不显示所需的文本,java,swing,jtextarea,Java,Swing,Jtextarea,我的JTextArea文本显示不正确,因此我的程序有问题。此程序使用多个类创建一个圆,并根据屏幕底部的滑块进行更改。在画面的顶部,我试图让它显示圆圈的统计数据。但是,JTextArea正在出现,但内部没有文本 import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JSlider; import javax.swing.JTextArea; import

我的JTextArea文本显示不正确,因此我的程序有问题。此程序使用多个类创建一个圆,并根据屏幕底部的滑块进行更改。在画面的顶部,我试图让它显示圆圈的统计数据。但是,JTextArea正在出现,但内部没有文本

import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.JTextArea;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;   

public class SliderFrame extends JFrame
{
  private final JSlider diameterJSlider; // slider to select diameter 
  private final OvalPanel myPanel; // panel to draw circle
  private JTextArea stats;
  private double radius;
  private double diameter;
  private double circumference;
  private double area;

  // no-argument constructor
  public SliderFrame()
  {
     super("Circle Statistics");

     myPanel = new OvalPanel(); // create panel to draw circle
     myPanel.setBackground(Color.LIGHT_GRAY);
     stats = new JTextArea(2, 20);

     // set up JSlider to control diameter value                       
     diameterJSlider =                                                 
        new JSlider(SwingConstants.HORIZONTAL, 0, 400, 10);            
     diameterJSlider.setMajorTickSpacing(10); // create tick every 10  
     diameterJSlider.setPaintTicks(true); // paint ticks on slider     

     // register JSlider event listener                                
     diameterJSlider.addChangeListener(                                
        new ChangeListener() // anonymous inner class                  
        {                                                              
           // handle change in slider value                            
           @Override                                                   
           public void stateChanged(ChangeEvent e)                     
           {                                                           
              myPanel.setDiameter(diameterJSlider.getValue()); 
              stats = new JTextArea();
              radius = diameterJSlider.getValue() * .5;
              diameter = diameterJSlider.getValue();
              circumference = Math.PI * diameterJSlider.getValue();
              area = Math.PI * radius * radius;
              stats.setText("Radius: " + radius + " " + "Diameter: " + diameter + " " + "Circumference: " + circumference + " " + "Area: " + area); //help here

           }                                                           
        }                                                              
     );                                                                

     add(diameterJSlider, BorderLayout.SOUTH);
     add(myPanel, BorderLayout.CENTER);
     add(stats, BorderLayout.NORTH);
  }
} // end class SliderFrame
不要在ChangeListener中不断重新创建新的JTextArea。那简直是疯了(说真的)。通过这样做,您可以继续创建一个新的JTextArea对象,一个未显示的对象,然后向其写入,这样就可以理解文本从未显示


解决方案:去掉指示行。

非常感谢。这完全是我的错,我最初在另一个位置创建了JTextArea,但忘了删除它。如果你不介意我问的话。有没有一种简单的方法可以使用JTextArea限制小数位数?@DHem使用
NumberFormatter
public void stateChanged(ChangeEvent e)                     
{                                                           
   myPanel.setDiameter(diameterJSlider.getValue()); 
   stats = new JTextArea();  // *******??????????????????????**********
   radius = diameterJSlider.getValue() * .5;
   diameter = diameterJSlider.getValue();
   circumference = Math.PI * diameterJSlider.getValue();
   area = Math.PI * radius * radius;
   stats.setText("Radius: " + radius + " " + "Diameter: " + diameter + " " + "Circumference: " + circumference + " " + "Area: " + area); //help here
}