簡體   English   中英

使用JButton更改Java接口

[英]Using a JButton to change an interface in Java

這個想法是在屏幕頂部有5個JButton。 每次您按下一個菜單,它都會刪除舊菜單並產生一個新菜單。 對我來說,我的代碼看起來不錯。 問題是,當我單擊“添加CD”時,什么都沒有發生,但是如果我手動調整窗口大小(將鼠標移至窗口的邊緣並更改其大小),則會彈出新菜單...任何人都可以給我我對如何解決此問題的建議...謝謝,下面是整個可運行的代碼。

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


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

}

更新UI的布局后,執行this.validate() 調用此方法將通知UI重新分配其組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM