0

I am having trouble having my JList show up on my JFrame from the assetListing() method. For some reason it wont even show up on my MainFrame JFrame. The compiler seems to be seeing it because I am getting a ClassCastException error during runtime. If anyone could help me figure this out, it would save me alot of trouble, been at it for a while now..

package wealthmanager;


import InheritanceDesign.Asset;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import javax.swing.*;
import java.awt.event.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
;

public class WealthManagerForm extends JFrame implements ActionListener
{
    private JFrame MainFrame = new JFrame("Wealth Manager");
    private JFrame assetEntry1 = new JFrame("Bank Account");
    private JFrame assetEntry2 = new JFrame("Stocks");
    private JFrame assetEntry3 = new JFrame("Car");
    private JFrame assetEntry4 = new JFrame("House");
    private JMenuBar assetMenu = new JMenuBar();
    private JMenu selectAsset = new JMenu("New");
    private JMenuItem bank = new JMenuItem("Bank Account");
    private JMenuItem stock = new JMenuItem("Stocks");
    private JMenuItem car = new JMenuItem("Car");
    private JMenuItem house = new JMenuItem("House");
    private JList assetListDisplay;
    private JPanel assetData;
    private JScrollPane assetScroll;

    private Vector assetList = new Vector();



    public WealthManagerForm()
    {
        gui();
    }

    public void gui()
    {
        MainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MainFrame.setSize(1200, 800);
        MainFrame.setVisible(true);


        JLabel heading = new JLabel("Assets");

        assetEntry1.setSize(450, 200);
        assetEntry2.setSize(450, 250);
        assetEntry3.setSize(450, 275);
        assetEntry4.setSize(450, 270);        


        assetMenu.add(selectAsset);
        selectAsset.setFont(new Font("SansSerif", Font.PLAIN, 17));
        MainFrame.setJMenuBar(assetMenu);

        newMenu();
        assetListing();
    }

    public void assetListing()
    {
    JPanel listPanel = new JPanel(new BorderLayout());
    listPanel.setPreferredSize(new Dimension(400, 150));
    MainFrame.setLayout(new BorderLayout());
    MainFrame.add(listPanel);
    setLayout(new GridLayout());
    assetListDisplay = new JList (assetList);
    //assetListDisplay.addListSelectionListener((ListSelectionListener) this);

    listPanel.add(assetListDisplay);

     listPanel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder()));
     pack();


    }
     public void valueChanged(ListSelectionEvent event)
    {
       if(event.getSource() == assetListDisplay && !event.getValueIsAdjusting())
       {
         String stringValue = (String)assetListDisplay.getSelectedValue();
         //if(stringValue != null)
             //
            // assetData.setText(stringValue);
       }
    }

    public void newMenu()
    {
        bankMenu();
        stockMenu();
        carMenu();
        houseMenu();

        MainFrame.setJMenuBar(assetMenu);
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
    }

    public void bankMenu()
    {
        selectAsset.add(bank);
        bank.setFont(new Font("SansSerif", Font.PLAIN, 20));
        selectAsset.addSeparator();
        bank.addActionListener(new ActionListener() 
        {

            @Override
            public void actionPerformed(ActionEvent ae) {
                assetEntry1.setVisible(true);

            }
        });

                JPanel panel2 = new JPanel();
                panel2.setPreferredSize(new Dimension(400, 120));
                assetEntry1.setLayout(new GridBagLayout());
                assetEntry1.add(panel2);
                setLayout(new GridLayout()); 
                GridBagConstraints constraints = new GridBagConstraints();
                constraints.anchor = GridBagConstraints.WEST;
                constraints.insets = new Insets(100, 100, 100, 100);
                constraints.gridx = 0;
                constraints.gridy = 0;
                JLabel bankLabel1 = new JLabel("Name    ");
                JLabel bankLabel2 = new JLabel("Balance");
                JTextArea bankText1 = new JTextArea(2, 30);
                JTextArea bankText2 = new JTextArea(2, 30);
                JButton bankButton1 = new JButton("Cancel");
                JButton bankButton2 = new JButton("Save");
                panel2.add(bankLabel1, constraints);
                constraints.gridx = 1;
                panel2.add(bankText1, constraints);
                constraints.gridx = 0;
                constraints.gridy = 1;
                panel2.add(bankLabel2, constraints);
                constraints.gridx = 1;
                panel2.add(bankText2, constraints);
                constraints.anchor = GridBagConstraints.CENTER;
                panel2.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder()));
                pack();
                setLocationRelativeTo(null);         
                panel2.add(bankButton1, "South");
                panel2.add(bankButton2, "South");
    }

    public void stockMenu()
    {
        selectAsset.add(stock);
        stock.setFont(new Font("SansSerif", Font.PLAIN, 20));
        selectAsset.addSeparator();
        stock.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                assetEntry2.setVisible(true);
                //setVisible(true);
            }
        });
                JPanel panel = new JPanel();
                panel.setPreferredSize(new Dimension(400, 150));
                assetEntry2.setLayout(new GridBagLayout());
                assetEntry2.add(panel);
                setLayout(new GridLayout()); 
                GridBagConstraints constraints = new GridBagConstraints();
                constraints.anchor = GridBagConstraints.WEST;
                constraints.insets = new Insets(100, 100, 100, 100);
                constraints.gridx = 0;
                constraints.gridy = 0;
                JLabel stockLabel1 = new JLabel("Ticker   ");
                JLabel stockLabel2 = new JLabel("Quantity");
                JLabel stockLabel3 = new JLabel("Price      ");
                JTextArea stockText1 = new JTextArea(2, 30);
                JTextArea stockText2 = new JTextArea(2, 30);
                JTextArea stockText3 = new JTextArea(2, 30);
                JButton stockButton1 = new JButton("Cancel");
                JButton stockButton2 = new JButton("Save");
                panel.add(stockLabel1, constraints);
                constraints.gridx = 1;
                panel.add(stockText1, constraints);
                constraints.gridx = 0;
                constraints.gridy = 1;
                panel.add(stockLabel2, constraints);
                constraints.gridx = 1;
                panel.add(stockText2, constraints);
                constraints.gridx = 0;
                constraints.gridy = 2;
                panel.add(stockLabel3, constraints);
                constraints.gridx = 1;
                panel.add(stockText3, constraints);
                constraints.anchor = GridBagConstraints.CENTER;
                panel.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder()));
                pack();
                setLocationRelativeTo(null);         
                panel.add(stockButton1, "South");
                panel.add(stockButton2, "South");


    }

    public void carMenu()
    {
            selectAsset.add(car);
        car.setFont(new Font("SansSerif", Font.PLAIN, 20));
        car.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                assetEntry3.setVisible(true);
            }
        });

                JPanel panel3 = new JPanel();
                panel3.setPreferredSize(new Dimension(400, 200));
                assetEntry3.setLayout(new GridBagLayout());
                assetEntry3.add(panel3);
                setLayout(new GridLayout()); 
                GridBagConstraints constraints = new GridBagConstraints();
                constraints.anchor = GridBagConstraints.WEST;
                constraints.insets = new Insets(100, 100, 100, 100);
                constraints.gridx = 0;
                constraints.gridy = 0;
                JLabel carLabel1 = new JLabel("Type   ");
                JLabel carLabel2 = new JLabel("Name");
                JLabel carLabel3 = new JLabel("Value");
                JLabel carLabel4 = new JLabel("Debt  ");
                JTextArea carText1 = new JTextArea(2, 30);
                JTextArea carText2 = new JTextArea(2, 30);
                JTextArea carText3 = new JTextArea(2, 30);
                JTextArea carText4 = new JTextArea(2, 30);
                JButton carButton1 = new JButton("Cancel");
                JButton carButton2 = new JButton("Save");
                panel3.add(carLabel1, constraints);
                constraints.gridx = 1;
                panel3.add(carText1, constraints);
                constraints.gridx = 0;
                constraints.gridy = 1;
                panel3.add(carLabel2, constraints);
                constraints.gridx = 1;
                panel3.add(carText2, constraints);
                constraints.gridx = 0;
                constraints.gridy = 2;
                panel3.add(carLabel3, constraints);
                constraints.gridx = 1;
                panel3.add(carText3, constraints);
                constraints.gridx = 0;
                constraints.gridy = 3;
                panel3.add(carLabel4, constraints);
                constraints.gridx = 1;
                panel3.add(carText4, constraints);

                constraints.anchor = GridBagConstraints.CENTER;
                panel3.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder()));
                pack();
                setLocationRelativeTo(null);         
                panel3.add(carButton1, "South");
                panel3.add(carButton2, "South");

    }

    public void houseMenu()
    {
          selectAsset.add(house);
        house.setFont(new Font("SansSerif", Font.PLAIN, 20));
        selectAsset.addSeparator();
        house.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent ae) {
                assetEntry4.setVisible(true);
            }
        });   

                JPanel panel4 = new JPanel();
                panel4.setPreferredSize(new Dimension(400, 200));
                assetEntry4.setLayout(new GridBagLayout());
                assetEntry4.add(panel4);
                setLayout(new GridLayout()); 
                GridBagConstraints constraints = new GridBagConstraints();
                constraints.anchor = GridBagConstraints.WEST;
                constraints.insets = new Insets(100, 100, 100, 100);
                constraints.gridx = 0;
                constraints.gridy = 0;
                JLabel houseLabel1 = new JLabel("Type   ");
                JLabel houseLabel2 = new JLabel("Name");
                JLabel houseLabel3 = new JLabel("Value");
                JLabel houseLabel4 = new JLabel("Debt  ");
                JTextArea houseText1 = new JTextArea(2, 30);
                JTextArea houseText2 = new JTextArea(2, 30);
                JTextArea houseText3 = new JTextArea(2, 30);
                JTextArea houseText4 = new JTextArea(2, 30);
                JButton houseButton1 = new JButton("Cancel");
                JButton houseButton2 = new JButton("Save");
                panel4.add(houseLabel1, constraints);
                constraints.gridx = 1;
                panel4.add(houseText1, constraints);
                constraints.gridx = 0;
                constraints.gridy = 1;
                panel4.add(houseLabel2, constraints);
                constraints.gridx = 1;
                panel4.add(houseText2, constraints);
                constraints.gridx = 0;
                constraints.gridy = 2;
                panel4.add(houseLabel3, constraints);
                constraints.gridx = 1;
                panel4.add(houseText3, constraints);
                constraints.gridx = 0;
                constraints.gridy = 3;
                panel4.add(houseLabel4, constraints);
                constraints.gridx = 1;
                panel4.add(houseText4, constraints);

                constraints.anchor = GridBagConstraints.CENTER;
                panel4.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder()));
                pack();
                setLocationRelativeTo(null);         
                panel4.add(houseButton1, "South");
                panel4.add(houseButton2, "South");

    }
}
Andrew Thompson
  • 168,117
  • 40
  • 217
  • 433
Andrew
  • 5
  • 5
  • What line throws the exception? Please help us out by giving us enough information to be able to answer this. – Hovercraft Full Of Eels Dec 08 '15 at 03:27
  • 1
    [The Use of Multiple JFrames, Good/Bad Practice?](http://stackoverflow.com/q/9554636/418556) – MadProgrammer Dec 08 '15 at 03:27
  • 1
    Line 84. Where it says //assetListDisplay.addListSelectionListener((ListSelectionListener) this); – Andrew Dec 08 '15 at 03:28
  • 1
    `WealthManagerForm` doesn't implement `ListSelectionListener`, how could you cast it to be one – MadProgrammer Dec 08 '15 at 03:29
  • Extending from `JFrame` and the your use of `MainFrame` is making it difficult to know which class is actually suppose to be the main window. – MadProgrammer Dec 08 '15 at 03:30
  • Thanks for the link MadProgrammer, very interesting responses. – Andrew Dec 08 '15 at 03:34
  • 2
    You look to have a huge God class, one whose size and large scope makes it hard for you and outsiders (us!) to fully grasp and debug. Much better would be to break down the sub-sections of this class into smaller **independently testable** classes. This will save you and us a LOT of headaches. – Hovercraft Full Of Eels Dec 08 '15 at 03:38

0 Answers0