I am suppose to have a method called save()
which should marshal the list of computer parts in the right panel to an XML file. In reverse, another method called load()
that should unmarshal the saved XML file back into an object.
So basically, the "Save" event will call save()
method and save the list of parts in the right panel to an XML file. The "Load" event should clear the right panel, and call load()
method.
When load()
is called, it should display the unmarshalled data in the right panel. I got "Exit" to work.
I'm having hard time figuring out the "Load" and "Save" parts though.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class PCParts implements ActionListener{
JList destinationList, sourceList;
JButton buttonin, buttonout;
DefaultListModel source, destination;
public JPanel createContentPane (){
JPanel totalGUI = new JPanel();
source = new DefaultListModel();
destination = new DefaultListModel();
String shoppingItems[] = {"Case", "Motherboard", "CPU", "RAM", "GPU",
"HDD", "PSU"};
for(int i = 0; i < shoppingItems.length; i++)
{
source.addElement(shoppingItems[i]);
}
destinationList = new JList(source);
destinationList.setVisibleRowCount(10);
destinationList.setFixedCellHeight(20);
destinationList.setFixedCellWidth(140);
destinationList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
JScrollPane list1 = new JScrollPane(destinationList);
sourceList = new JList(destination);
sourceList.setVisibleRowCount(10);
sourceList.setFixedCellHeight(20);
sourceList.setFixedCellWidth(140);
sourceList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
JScrollPane list2 = new JScrollPane(sourceList);
JPanel buttonPanel = new JPanel();
buttonin = new JButton(">>");
buttonin.setHorizontalAlignment(SwingConstants.RIGHT);
buttonin.addActionListener(this);
buttonPanel.add(buttonin);
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.LINE_AXIS));
bottomPanel.add(Box.createRigidArea(new Dimension(10,0)));
bottomPanel.add(list1);
bottomPanel.add(Box.createRigidArea(new Dimension(5,0)));
bottomPanel.add(buttonPanel);
buttonout = new JButton("<<");
buttonout.addActionListener(this);
buttonPanel.add(buttonout);
bottomPanel.add(Box.createRigidArea(new Dimension(5,0)));
bottomPanel.add(list2);
bottomPanel.add(Box.createRigidArea(new Dimension(10,0)));
totalGUI.add(bottomPanel);
totalGUI.setOpaque(true);
return totalGUI;
}
private JPanel createSquareJPanel(Color color, int size) {
JPanel tempPanel = new JPanel();
tempPanel.setBackground(color);
tempPanel.setMinimumSize(new Dimension(size, size));
tempPanel.setMaximumSize(new Dimension(size, size));
tempPanel.setPreferredSize(new Dimension(size, size));
return tempPanel;
}
public void actionPerformed(ActionEvent e)
{
int i = 0;
if(e.getSource() == buttonin)
{
int[] fromindex = destinationList.getSelectedIndices();
Object[] from = destinationList.getSelectedValues();
for(i = 0; i < from.length; i++)
{
destination.addElement(from[i]);
}
for(i = (fromindex.length-1); i >=0; i--)
{
source.remove(fromindex[i]);
}
}
else if(e.getSource() == buttonout)
{
Object[] to = sourceList.getSelectedValues();
int[] toindex = sourceList.getSelectedIndices();
for(i = 0; i < to.length; i++)
{
source.addElement(to[i]);
}
for(i = (toindex.length-1); i >=0; i--)
{
destination.remove(toindex[i]);
}
}
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("PC Parts Builder");
JMenu file = new JMenu ("File");
file.setMnemonic (KeyEvent.VK_F);
PCParts demo = new PCParts();
frame.setContentPane(demo.createContentPane());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar);
JMenu mnFile = new JMenu("File");
menuBar.add(mnFile);
JMenuItem item;
file.add(item = new JMenuItem("Load"));
item.setMnemonic (KeyEvent.VK_O);
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doOpenCommand();
}
private void doOpenCommand() {
// TODO Auto-generated method stub
}
});
mnFile.add(item);
JMenuItem mntmSave = new JMenuItem("Save");
mntmSave.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doSaveCommand();
}
private void doSaveCommand() {
}
});
mnFile.add(mntmSave);
JMenuItem mntmNewMenuItem = new JMenuItem("Exit");
mntmNewMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});
mnFile.add(mntmNewMenuItem);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}