2017-02-20 18 views
-1

Я пытаюсь изменить текст JTextField, нажимая на JFreeChart.Как установить текст текстового поля динамически в java?

Я определил два класса, определил JTextField в одном классе с именем, как First и JFreeChart в другом классе по имени, как Second. И я создал код для получения значения координат x и y, когда я нажимаю на точки, нарисованные на диаграмме.

В коде используется прослушиватель мыши для получения координат. Теперь я хочу передать эти значения координат в текстовое поле, определенное в другом классе First. Но я не могу получить эти значения динамически.

Я создал четыре текстовых поля, но хочу, чтобы только два из них динамически обновляли значение на клике. Текстовое поле показывает значение 1 для newX и newY, которые я назначил. Если я удалю значение 1, которое я присвоил переменной newX и newY, он показывает NullPointerException.

Предложите мне хороший способ сделать то же самое. Я хочу, чтобы всякий раз, когда я нажимаю на точки, нарисованные на графике, они отображаются в текстовом поле. Текстовое поле показывает значение 1 для newX и newY, которое я назначил.

Код я использовал для извлечения значения х и у координат выглядит следующим образом и назван этот класс в качестве первого:

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 и вызываю переменную newX и newY в этом классе.

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

Is [ 'JTextField # SetText (String)'] (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-do-i- fix-it) – MasterBlaster

+0

JTextField не обновляет значения всякий раз, когда я нажимаю на точки. он показывает только значение по умолчанию, которое в моем случае равно 1. Я хочу, чтобы текстовое поле обновляло значение по щелчку. –

ответ

1

Не обновлять текстовые поля, если ce instanceof XYItemEntity не true, как они показывают 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 
     } 
    } 
});