У меня есть программа, использующая JTabbedPane. На одной панели у меня есть кнопка, которая обновляет массивList объектов на основе ввода с той же панели.Как передать ArrayList между двумя отдельными JTabbedPanes
Что бы я хотел сделать, это иметь второе обновление панели с информацией об объекте на основе массива в первой панели.
Однако я не уверен, как передать список между панелями. Есть ли способ переместить массив на панель №2 при нажатии кнопки обновления на первой панели?
Это основной файл. Инстанцирование два язычка
public class Assignment6 extends JApplet
{
private int APPLET_WIDTH = 650, APPLET_HEIGHT = 350;
private JTabbedPane tPane;
private StorePanel storePanel;
private PurchasePanel purchasePanel;
private ArrayList computerList;
public void init()
{
computerList = new ArrayList();
storePanel = new StorePanel(computerList, purchasePanel);
purchasePanel = new PurchasePanel(computerList);
tPane = new JTabbedPane();
tPane.addTab("Store Inventory", storePanel);
tPane.addTab("Customer Purchase", purchasePanel);
getContentPane().add(tPane);
setSize (APPLET_WIDTH, APPLET_HEIGHT); //set Applet size
}
}
Первая панель инстанцирует кнопку слушателя, который применяет все логики к списку массива «compList»
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
//Add Computer to list
Computer comp = new Computer();
comp.setBrandName(brandField.getText());
comp.setPrice(Double.parseDouble(priceField.getText()));
comp.setMemory(Integer.parseInt(memoryField.getText()));
comp.setCPU(typeField.getText(), Integer.parseInt(speedField.getText()));
compList.add(comp);
}
stringField.setText(listString);
alertLabel.setText("Computer Added");
}
}
Вот другая панель. Цикл for в конце - это то, что мне нужно, чтобы нажать массив arrayList. После того, как он получает список, заселяет коробку с флажком для каждого объекта в списке
public PurchasePanel(ArrayList compList)
{
west = new JPanel();
east = new JPanel();
totalField = new JTextField();
this.compList = compList;
setLayout(new GridLayout(0,2));
add(west);
add(east);
east.setLayout(new BorderLayout());
east.add(currentTotalLabel, BorderLayout.NORTH);
east.add(totalField, BorderLayout.CENTER);
west.setLayout(new BoxLayout(west, BoxLayout.Y_AXIS));
for(Object c : compList){
System.out.println("Made it");
NumberFormat fmt = NumberFormat.getCurrencyInstance();
String str = ("BrandName:" + (((Computer) c).getBrandName() +"CPU:" + (((Computer) c).getCPU() +"Memory:" + ((Computer) c).getMemory() + "M" +"Price:" + fmt.format(((Computer) c).getPrice()))));
JCheckBox chk = new JCheckBox(str);
west.add(chk);
}
}
}
Существует определенно путь. Почему бы вам не опубликовать свой код, чтобы мы могли точно видеть, с чем вы работаете? – ControlAltDel
Код отправлен. Я упустил все настройки GUI @ControlAltDel – jrounsav
. Лучший способ решить эту проблему - использовать готовые компоненты Swing/etc в 1 классе, который настраивает и контролирует их все. Таким образом, ваша логика о том, что нужно сделать, если изменения в списке можно обрабатывать на верхнем уровне, который имеет доступ ко всему – ControlAltDel