2016-12-28 6 views
0

Ich habe ein "Main Menu" JFrame mit verschiedenen JButtons für verschiedene Zeiträume erstellt. Wenn ich auf einen der Knöpfe klicke, öffnet sich ein neuer JFrame, aber wann immer ich darüber verfüge und zum Hauptmenü zurückkehre und es wieder öffne, scheint es, als ob es mehr Knöpfe und ich weiß nicht warum.Duplizierung von JButtons in JFrame

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(); 
     } 

Andere JFrame, die Tasten einmal

//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); 
    } 

wieder geöffnet Duplikaten und schließlich Zuhörer Code meine Endung

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

Ihre 'createFramePERIOD7' Methode fügt immer drei weitere Schaltflächen zum' Periode7' JFrame hinzu. Warum würden Sie nicht erwarten, jedes Mal drei weitere Knöpfe zu sehen? – VGR

+0

Variablennamen sollten NICHT mit einem Großbuchstaben beginnen. Befolgen Sie die Java-Namenskonventionen. – camickr

Antwort

0

Ihre Methode fügt 3 Tasten jedes Mal ... Sie können das Problem beheben, indem Sie Ihre

createFramePERIOD7() method 

Durch Einfügen der unten angegebenen Zeile.

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

Im Grunde, die 'Periode 7' Frame zurücksetzen ... – DarkV1

+0

Vielen Dank, ich habe versucht, mich selbst zu lehren, Java immer noch nicht sehr gut darin. – Ornstein

+0

Glücklich zu helfen :) @Ornstein – DarkV1