2017-02-20 99 views
-1

我试图在点击JFreeChart时更改JTextField的文字。如何在java中动态设置文本字段的文本?

我定义了两个类,在一个类中定义了JTextField,名为FirstJFreeChart,其他类名为Second。我创建了一个代码,用于在点击图表上绘制的点时检索x和y坐标的值。

该代码使用图表鼠标侦听器来检索坐标。现在我想将这些坐标值传递到其他类First中定义的文本字段中。但我无法动态获取这些值。

我已经创建了四个文本字段,但我只希望其中的两个要动态更新点击的值。文本字段显示我已分配的newX和的值1。如果删除已分配给变量newXnewY的值1,则显示为NullPointerException

建议我这样做的好方法。每当我点击图表上绘制的点时,我都希望它们显示在文本字段中。文本字段显示为我分配的newX和newY的值1。

我已经用于检索x和y坐标的值的代码如下所示并命名这个类作为第一:

Number newX = 1; //value assigned 
    Number newY = 1; 
    chartPanel.addChartMouseListener(new ChartMouseListener() { 
      public void chartMouseClicked(final ChartMouseEvent event){ 
       try { 
       XYItemEntity ce = (XYItemEntity) event.getEntity(); 
       newX = ce.getDataset().getX(ce.getSeriesIndex(), 
ce.getItem()); 
       newY = ce.getDataset().getY(ce.getSeriesIndex(), ce.getItem()); 
       // retrieving the x and y co-ordinates. 

       System.out.println("chartMouseClicked at" + " " + newX + " " + newY); 
      } 
       catch (Exception e) {} 
      } 

我已经使用到的值设成TextField的代码如下: 我创建了类First的对象,并调用此类中的变量newXnewY

First f = new First(""); 
    Number x = f.newX; //20; 
    Number y = f.newY; //30; 
    int xx = x.intValue(); 
    int yy = y.intValue(); 
    int width = 300; 
    int height = 350; 
    // converting value into string for textfield 

    String x1 = String.valueOf(xx); 
    String y1 = String.valueOf(yy); 
    String w1 = String.valueOf(width); 
    String h1 = String.valueOf(height); 
    Rectangle r = new Rectangle(xx,yy,width,height); 
    jf1.setText(x1); 
    jf2.setText(y1); 
    jf3.setText(w1); 
    jf4.setText(h1); 
+1

是['的JTextField#的setText(字符串)'](http://docs.oracle.com/javase/7/docs/api/javax/swing/text/JTextComponent.html#setText(java中。 lang.String))你在找什么?更快地发布[mcve]以获得更好的帮助。也请看看[什么是'NullPointerException',我该如何解决它?](http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-doi-i-修复它) – MasterBlaster

+0

只要点击点,JTextField不会更新这些值。它只显示默认值,在我的情况下设置为1。我希望textfield更新点击的值。 –

回答

1

除非ce instanceof XYItemEntitytrue,像他们展示here不更新您的文本字段。

chartPanel.addChartMouseListener(new ChartMouseListener() { 
    public void chartMouseClicked(final ChartMouseEvent event) { 
     ChartEntity ce = cme.getEntity(); 
     XYItemEntity ce = (XYItemEntity) event.getEntity(); 
     if (ce instanceof XYItemEntity) { 
      XYItemEntity e = (XYItemEntity) ce; 
      XYDataset d = e.getDataset(); 
      updateTextFields(e, d); // call your update method 
     } 
    } 
});