Re: Reading data into a JList
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JPanel;
public class ComputerNames
extends JPanel
{
private static final long serialVersionUID = 1L;
private JList list;
public ComputerNames()
{
super(new BorderLayout());
List<Integer> computerData = null;
try
{
writeData();
computerData = readData();
}
catch (IOException e)
{
e.printStackTrace();
}
list = new JList();
list.setListData(listComputers(computerData).toArray());
add(list, BorderLayout.CENTER);
}
private static void createAndShowGUI()
{
JFrame frame = new JFrame("ComputerNames");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new ComputerNames());
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
EventQueue.invokeLater(new Runnable()
{
public void run()
{
createAndShowGUI();
}
});
}
public static List<String> listComputers(List<Integer> data)
{
List<String> computerNames = new ArrayList<String>();
NumberFormat format = NumberFormat.getInstance();
format.setMinimumIntegerDigits(2);
computerNames.add("RM49_AD");
for(int i = 0; i < data.size(); i = i+2)
{
computerNames.add("RM" + data.get(i) + "_" +
format.format(data.get(i+1)));
}
return computerNames;
}
static void writeData()
throws IOException
{
File f = new File("chars");
String fileContents =
"49014902490349044905" +
"49064907490849094910" +
"49114912491349144915" +
"49164917491849194920" +
"49214922492349244925" +
"49264927492849294930";
FileWriter fos = new FileWriter(f);
fos.write(fileContents);
fos.close();
}
static List<Integer> readData()
throws NumberFormatException, IOException
{
List<Integer> list = null;
File f = new File("chars");
FileReader fis = new FileReader(f);
char[] tmp = new char[2];
list = new ArrayList<Integer>();
int ii;
while ((ii = fis.read(tmp)) > -1)
{
list.add(Integer.valueOf(new String(tmp)));
}
fis.close();
return list;
}
}