Results 1 to 4 of 4
  1. #1
    kev670 is offline Member
    Join Date
    Oct 2010
    Posts
    20
    Rep Power
    0

    Default Using a button to change the interface

    The idea is there are 5 buttons on the top of the screen. Every time you press one it removes the old menu and produces a new one. To me, my code looks fine. The problem is when i click on "Add CD" nothing happens, but then if i manually resize the window (moving my mouse to the edge of the window and changing the size of it) the new menu pops up... Can anyone give me advice on how to fix this problem... Thanks, the whole runnable code is below

    Java Code:
    package ui;
    
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.event.*;
    
    
    
    public class mainInterface extends JFrame implements ActionListener
    {
    
        // Variables declaration - do not modify
        private JButton jButton1;
        private JButton jButton2;
        private JButton jButton3;
        private JButton jButton4;
        private JButton jButton5;
        private JButton jButton6;
        private JPanel jPanel1;
    
        private JTextField text1;
        private JTextField text2;
        private JTextField text3;
        private JTextField text4;
        private JTextField text5;
        private JTextField text6;
        private JTextField text7;
        private JTextField text8;
    
        private JLabel label1;
        private JLabel label2;
        private JLabel label3;
        private JLabel label4;
        private JLabel label5;
        private JLabel label6;
        private JLabel label7;
        private JLabel label8;
    
        private JPanel bottomPanel;
        private JPanel topPanel;               //  declaring panels
        private JPanel holdAll;
    
        private JPanel one;
        private JPanel two;
        private JPanel three;
        private JPanel four;
    
    //----------------------------------------------------------
    
    //----------------------------------------------------------
        public static void main(String args[])
        {
            java.awt.EventQueue.invokeLater(new Runnable()
            {
                public void run()
                {
                    mainInterface myApplication = new mainInterface();
    
                    myApplication.setLocation(100, 100);                  
            
                    myApplication.setSize(700, 400);                       
    
                    myApplication.setTitle("Kevin's Jukebox");
    
                    myApplication.setVisible(true);
    
    
                }
            });
        }
    //----------------------------------------------------------
    
    //----------------------------------------------------------
        /** Creates new form mainInterface */
        public mainInterface()
        {
     
            jButton1 = new JButton("Add CD");
            jButton2 = new JButton("Add Video");
            jButton3 = new JButton("Total Play Time");
            jButton4 = new JButton("Create Playlist");
            jButton5 = new JButton("Show Library");
            jButton6 = new JButton("Quit");
    
            topPanel = new JPanel();
            holdAll  = new JPanel();
            bottomPanel = new JPanel();
    
            one = new JPanel();
            two = new JPanel();
            three = new JPanel();
            four = new JPanel();
    
            text1 = new JTextField(15);
            label1 = new JLabel("Title: ");
            text2 = new JTextField(15);
            label2 = new JLabel("Artist: ");
            text3 = new JTextField(15);
            label3 = new JLabel("Length: ");
            text4 = new JTextField(15);
            label4 = new JLabel("Num of Tracks: ");
            label5 = new JLabel("Welcome to Kevins Jukebox");
    
            int flag = 0;
            drawApp(flag);
    
            jButton1.addActionListener(this);
            jButton2.addActionListener(this);
            jButton3.addActionListener(this);
            jButton4.addActionListener(this);                           
            jButton5.addActionListener(this);
            jButton6.addActionListener(this);
    
    
    
            
            setDefaultCloseOperation(DISPOSE_ON_CLOSE);
            
        }
    //----------------------------------------------------------
    
    //----------------------------------------------------------
        public void actionPerformed(ActionEvent e)
        {
            if (e.getSource() == jButton1)                              
            {
                
                int flag = 1;
                drawApp(flag);
            }
        }
    //----------------------------------------------------------
    
    //----------------------------------------------------------
        public void drawApp(int flag)
        {
            topPanel.setLayout(new FlowLayout());
                topPanel.add(jButton1);
                topPanel.add(jButton2);
                topPanel.add(jButton3);
                topPanel.add(jButton4);
                topPanel.add(jButton5);
                topPanel.add(jButton6);
    
            bottomPanel.add(label5);
    
            holdAll.setLayout(new BorderLayout());
                holdAll.add(topPanel, BorderLayout.NORTH);
                holdAll.add(bottomPanel, BorderLayout.CENTER);
    
            if (flag == 0)
                bottomPanel.add(label5);
            else
                bottomPanel.remove(label5);
                
            if (flag == 1)
            {
    
                one.add(label1);
                one.add(text1);
                bottomPanel.add(one);
                two.add(label2);
                two.add(text2);
                bottomPanel.add(two);
                three.add(label3);
                three.add(text3);
                bottomPanel.add(three);
                four.add(label4);
                four.add(text4);
                bottomPanel.add(four);
    
                bottomPanel.setLayout(new BoxLayout(bottomPanel, BoxLayout.PAGE_AXIS));
            }
            getContentPane().add(holdAll, BorderLayout.CENTER); // places everything on the frame
    
    
        }
    //----------------------------------------------------------
    
    }

  2. #2
    kev670 is offline Member
    Join Date
    Oct 2010
    Posts
    20
    Rep Power
    0

    Default

    I found a solution... adding this.validate(); after the UI is updated... no idea why this is though... maybe someone could explain if they have any idea

  3. #3
    kev670 is offline Member
    Join Date
    Oct 2010
    Posts
    20
    Rep Power
    0

    Default

    ok... if anyones interested Container (Java 2 Platform SE v1.4.2)

  4. #4
    DarrylBurke's Avatar
    DarrylBurke is offline Member
    Join Date
    Sep 2008
    Location
    Madgaon, Goa, India
    Posts
    11,188
    Rep Power
    19

    Default

    Take a look at CardLayout

    db

    edit And please don't provide links to old, EOLed Java API.
    http://download.oracle.com/javase/6/...html#validate()

    Also, for a Swing GUI the correct process is to call revalidate() when adding componenet's to an already visible parent, and additionally repaint() when removing component/s from an already visible parent. NOT validate()
    Last edited by DarrylBurke; 03-17-2011 at 06:09 AM.

Similar Threads

  1. Adding a sqrt button and percentage button to a calculator
    By Josie_Taylor in forum New To Java
    Replies: 4
    Last Post: 03-14-2011, 01:16 AM
  2. Change button size on click
    By dvreed77 in forum AWT / Swing
    Replies: 0
    Last Post: 03-04-2011, 02:40 AM
  3. Can't change the color of a button...
    By mrbeast87 in forum AWT / Swing
    Replies: 5
    Last Post: 11-16-2010, 09:22 PM
  4. Replies: 3
    Last Post: 06-27-2010, 02:57 AM
  5. How can I change text for paginate button?
    By robot in forum NetBeans
    Replies: 0
    Last Post: 11-20-2008, 06:04 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •