java - 使用按钮从另一个类中的数组填充 JTextArea

标签 java swing append stringbuilder jtextarea

这是我的类,因为文本区域只获取数组中的最后一个对象。我需要 JTextArea 来显示数组中的所有对象。我已经修复了数组问题,但是,我不知道如何让我的按钮检索数组。我想在我的驱动程序类中实现一个 actionlistener,但我收到静态错误,java 希望我将内容设为 final,但这永远无法解决问题。我已经更新了代码来传达我的问题。

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

最佳答案

loop() 方法中更改此行 string = (theDrinks[i].toString()+"\n");

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

并在 drinkViewer 构造函数中用 string = ""; 初始化你的 string 变量,否则你会看到 null... 在你的输出中。

关于java - 使用按钮从另一个类中的数组填充 JTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9346242/

相关文章:

java - 将可选成员变量标记为 NonNull

java - 减少FFT的处理时间

java - 通过 addMouseListener 添加时如何检测鼠标点击 menuItem

java - 用于实现聊天显示的数据库建议

javascript - 如何使用来自 localstorage 的 jquery 将项目 append 到 DOM?

java - JTable 单元格值

java - 在 log4j 的内存 'list appender' 中

java - NullPointerException 通过搜索另一个屏幕来填充 JTextField

Java:String concat vs StringBuilder - 优化了,我该怎么办?

python - 从python执行shell命令