заполнение JTextArea из массива в другом классе с помощью кнопки - PullRequest
2 голосов
/ 19 февраля 2012

вот мои классы, так как текстовая область получает только последний объект в массиве.Мне нужно JTextArea для отображения всех объектов в массиве.Я исправил проблему с массивом, однако не могу понять, как заставить мою кнопку получить массив.Я хотел бы реализовать actionlistener в моем классе драйверов, но я получаю статические ошибки, и java хотел бы, чтобы я сделал вещи окончательно, но это никогда не решает проблему.Я обновил код, чтобы сообщить о моей проблеме.

public class drink
{
private String name;
private String carb;
private String desc;

public drink(String drinkName, String carbDetail, String descDetail)
{
    name = drinkName;
    carb = carbDetail;
    desc = descDetail;

}
public String toString()
{
    return(name + carb + desc);
}

}


public class drinkViewer
{
private String string;
private String name;
private drink[] theDrinks;
private int drinkCount=0;



public drinkViewer(String Name)
{
    name = Name;
    theDrinks = new drink[5];

}
public void addDrink(String drinkName, String carbDetail, String descDetail)
{
    theDrinks[drinkCount] = new drink(drinkName, carbDetail, descDetail);
    drinkCount++;

} 
public void getdrinkArray()
{
    for(int i=0;i<drinkCount;i++)
        {
           string += (theDrinks[i].toString()+"\n");
            //System.out.println(string);   
        }
}


}//end

import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;
import javax.swing.JTextArea;

public class driver
{
private JTextArea area;


public static void main(String args[])
{
    drinkViewer newViewer = new drinkViewer("test");
    newViewer.addDrink("orange", "fruit", "noncarb");
    newViewer.addDrink("beer", "5%","carb");
    newViewer.loop();
    //JTextArea area = new JTextArea(newViewer.getString());
    JFrame frame = new JFrame("Drink Descriptions");
    frame.setVisible(true);
    frame.setSize(400,400);
    JButton button = new JButton("Button");
    JPanel panel = new JPanel();
    frame.add(panel,BorderLayout.NORTH);
    panel.add(button,BorderLayout.NORTH);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    panel.add(area,BorderLayout.SOUTH);

      class ButtonListener implements ActionListener
     {
         public void actionPerformed (ActionEvent event)
        {
            JTextArea area = new JTextArea(newViewer.getdrinkArray());
        }
     }

     listener = new ButtonListener();

      }

      }//end

Ответы [ 3 ]

3 голосов
/ 19 февраля 2012

Вместо того, чтобы иметь string типа String, вы можете рассмотреть StringBuilder или StringBuffer, к которому можно добавить.

string = (theDrinks[i].toString()+"\n");

изменится на:

   string.append(theDrinks[i].toString()+"\n");

, а затем вы вызовете string.toString() в return выражении getString()

3 голосов
/ 19 февраля 2012

Измените эту строку в loop() метод string = (theDrinks[i].toString()+"\n");

на string += (theDrinks[i].toString()+"\n");

А также инициализируйте переменную string внутри drinkViewer конструктора с помощью string = ""; В противном случае высм. null... в вашем выводе.

2 голосов
/ 19 февраля 2012

Попробуйте это:

public void loop(){
    StringBuilder s = new StringBuilder();
    for(int i=0;i<drinkCount;i++){
        s.append(theDrinks[i].toString()).append("\n");
        //System.out.println(theDrinks[i].toString() + "\n"); 
    }
    string = s.toString();
 }

 public String getString(){
    return string;
 }
}//end

Добавляет каждый напиток в строку, используя StringBuilder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...