2016-12-28 81 views
0

我已經創建了一個包含不同JButtons的「Main Menu」JFrame在不同時期。如果我點擊其中一個按鈕,就會打開一個新的JFrame,但是每當我處理它並返回到主菜單並打開它時,它就好像更多的按鈕,我不知道爲什麼。在JFrame中重複JButtons

Main Menu 

    public class GUI extends JFrame implements ActionListener { 
     public static final int WIDTH=1000; 
     public static final int LENGTH=900; 
     public static JFrame myFrame = new JFrame("TOK Discussion Participation"); 
     static JPanel myPanel = new JPanel(); 
     public static JComponent buttonPanel; 
     public static JPanel IPanel = new JPanel(); 
     public static JFrame Period7 = new JFrame("Period 7"); 
     JPanel myPanel1 = new JPanel(); 

     public static Object createPanelPERIOD7; 
     public JFrame getMyFrame() 
     { 
     return myFrame; 
     } 

     public void setWindow() 
     { 
     //// Creates Icon in frame 
     JLabel Image = new JLabel(); 
     ImageIcon myIcon = new ImageIcon(new ImageIcon("https://stackoverflow.com/users/Antti/Desktop/GUI/TOKParticipation/src/TOK.jpg").getImage().getScaledInstance(200, 200, 1)); 
     Image.setIcon(myIcon); 
     //set window 
     Color backgroundColor = new Color(5,149,251); 
     myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     myFrame.setBounds(550,200,1000,600); 
     myFrame.getContentPane().setBackground(Color.LIGHT_GRAY); 
     myFrame.setLayout(new BorderLayout()); 
     myFrame.add(myPanel1,BorderLayout.NORTH); 
     myFrame.add(new JLabel(new ImageIcon("https://stackoverflow.com/users/Antti/Desktop/GUI/TOKParticipation/src/TOK.jpg")), BorderLayout.CENTER); 
     //myFrame.setIconImage("https://stackoverflow.com/users/Antti/Desktop/GUI/TOKParticipation/src/TOK.jpg"); 
     myFrame.getContentPane().setBackground(backgroundColor); 
     myFrame.setVisible(true); 


     //set label 
     JLabel myLabel = new JLabel("TOK Discussion Participation"); 
     JLabel myLabel1= new JLabel(""); 
     JLabel myLabel2 = new JLabel(""); 

     //set button (PERIOD 7) 
     JButton Period_7_BUTTON = new JButton("Period 7"); 
     //set Listener (PERIOD 7) 
     Period_7_BUTTON.addActionListener(new GUI()); 

     //2nd button (PERIOD 5) 
     JButton Period_5_BUTTON = new JButton("Period 5"); 
     //set Listener PERIOD 5) 
     Period_5_BUTTON.addActionListener(new GUI()); 

     //2nd button (PERIOD 2) 
     JButton Period_2_BUTTON = new JButton("Period 2"); 
     //set Listener PERIOD 2) 
     Period_2_BUTTON.addActionListener(new GUI()); 
     //2nd button (PERIOD 2) 
     JButton Period_4_BUTTON = new JButton("Period 4"); 
     //set Listener PERIOD 4) 
     Period_4_BUTTON.addActionListener(new GUI()); 

     //Setting Button FONT/SIZE 
     Period_2_BUTTON.setFont(new Font("Ubuntu", Font.BOLD,24)); 
     Period_4_BUTTON.setFont(new Font("Ubuntu", Font.BOLD,24)); 
     Period_5_BUTTON.setFont(new Font("Ubuntu", Font.BOLD,24)); 
     Period_7_BUTTON.setFont(new Font("Ubuntu", Font.BOLD,24)); 


     //Bundle button to panel 
     myPanel1.setLayout(new BoxLayout(myPanel1, BoxLayout.X_AXIS)); 
     myPanel1.add(Period_7_BUTTON); 
     myPanel1.add(Period_5_BUTTON); 
     myPanel1.add(Period_2_BUTTON); 
     myPanel1.add(Period_4_BUTTON); 

     //add content to window and make it visible 
     myFrame.add(myPanel1,BorderLayout.NORTH); 
     myFrame.setVisible(true); 
     } 
     public void dispose(){ 
     myFrame.dispose(); 
     } 

一個複製按鈕,其他的JFrame一次重新

//Method to create Period 7 Frame 


public static void createFramePERIOD7() { 

    //Creates Panel + Buttons 
    JPanel P7_Panel = new JPanel(); 
    JButton Column = new JButton("Add Columns"); 
    JButton Insert = new JButton("Insert Student 7"); 
    JButton Back = new JButton("Home"); 
    //Adding Buttons and Layout to Period 7 Frame 
    Period7.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    Period7.setBounds(550,200,1000,600); 
    Period7.setLayout(new FlowLayout());   
    Period7.add(Back); 
    Period7.add(Column); 
    Period7.add(Insert); 
    //Add ActionListener to Buttons 
    Back.addActionListener(new GUI()); 
    Insert.addActionListener(new GUI()); 
    Column.addActionListener(new GUI()); 
    //Adding Panel to Frame 
    //Period7.add(P7_Panel); 
    Period7.setVisible(true); 
    } 

最後我結束監聽器代碼

public void actionPerformed(ActionEvent e) 
    { 

    String buttonCommand = e.getActionCommand();  

    //Main menu Period 7 button 
    if(buttonCommand.equals("Period 7")) 
    { 
    myFrame.dispose(); 
    createFramePERIOD7(); 
    } 
if(buttonCommand.equals("Home")) 


{ 
    setWindow(); 
    Period7.dispose(); 
    } 
+0

您的'createFramePERIOD7'方法總是爲'Period7' JFrame添加三個按鈕。爲什麼你不希望每次看到三個按鈕? – VGR

+0

變量名稱不應以大寫字符開頭。遵循Java命名約定。 – camickr

回答

0

你的方法添加3個按鈕,每次...您可以通過更改修復您的

createFramePERIOD7() method 

插入下面所示的行。

public static void createFramePERIOD7() { 

    //Creates Panel + Buttons 
    JPanel P7_Panel = new JPanel(); 
    JButton Column = new JButton("Add Columns"); 
    JButton Insert = new JButton("Insert Student 7"); 
    JButton Back = new JButton("Home"); 
    Period7 = new JFrame(); //<-------------------------- Insert this line 
    //Adding Buttons and Layout to Period 7 Frame 
    Period7.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
    Period7.setBounds(550,200,1000,600); 
    Period7.setLayout(new FlowLayout());   
    Period7.add(Back); 
    Period7.add(Column); 
    Period7.add(Insert); 
    //Add ActionListener to Buttons 
    Back.addActionListener(new GUI()); 
    Insert.addActionListener(new GUI()); 
    Column.addActionListener(new GUI()); 
    //Adding Panel to Frame 
    //Period7.add(P7_Panel); 
    Period7.setVisible(true); 
    } 
+0

基本上,重置'Period 7'框架... – DarkV1

+0

非常感謝你,我試圖教自己java仍然不是很擅長它。 – Ornstein

+0

樂於幫忙:) @Ornstein – DarkV1