开发者

Using a JButton to change an interface in Java

开发者 https://www.devze.com 2023-02-17 12:59 出处:网络
The idea is there are 5 JButtons 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\"

The idea is there are 5 JButtons 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.

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开发者_C百科;
    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


    }
//----------------------------------------------------------

}


Execute this.validate() after you update the UI's layout. Calling this method tells the UI to relayout its components.

0

精彩评论

暂无评论...
验证码 换一张
取 消