2010-07-08 9 views
0

J'ai un code qui affiche un menu et 4 JButtons dans un JFrame. J'ai testé le code hier soir et tout fonctionnait bien. Maintenant, les JButtons n'apparaissent pas dans le JFrame aujourd'hui dans la matinée. J'ai essayé de faire dans Eclipse et pourtant j'ai eu le même résultat.JButtons n'apparaissent pas dans le JFrame

La sortie Je reçois:

alt text http://i30.tinypic.com/34rirub.jpg


Mon code:


import java.awt.Color; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 
import javax.swing.JSeparator; 

public class Control { 

//JFrame 
JFrame main = new JFrame(); 

//MenuBar 
JMenuBar menuBar = new JMenuBar(); 

//Adding the menu 
JMenu fileMenu = new JMenu("File"); 
JMenu functionMenu = new JMenu("Function"); 
JMenu helpMenu = new JMenu("Help"); 



//Adding the Menu Item 
JMenuItem addFlight = new JMenuItem("Add Flight"); 
JMenuItem exit = new JMenuItem("Exit"); 
JMenuItem landFlight = new JMenuItem("Land Flight"); 
JMenuItem virtualPath = new JMenuItem("Virtual Path"); 
JMenuItem flightDetails = new JMenuItem("Flight Details"); 
JMenuItem about = new JMenuItem("About ..."); 







//JPanel 
JPanel pnlButton = new JPanel(); 

//Buttons 
JButton btnAddFlight = new JButton("Add Flight"); 
JButton btnLandFlight = new JButton("Land Flight"); 
JButton btnVirtualPath = new JButton("Virtual Path"); 
JButton btnFlightDetails = new JButton("Flight Details"); 



public Control() { 
    //Adding to the file menu 
    fileMenu.add(addFlight); 
    fileMenu.add(exit); 


    //Adding to the function menu 
    functionMenu.add(landFlight); 
    functionMenu.add(virtualPath); 
    functionMenu.add(flightDetails); 



    //Adding to the help menu 
    helpMenu.add(about); 


    exit.add(new JSeparator()); 
    flightDetails.add(new JSeparator()); 

    //Adding the Menus to the Menu Bar 
    menuBar.add(fileMenu); 
    menuBar.add(functionMenu); 
    menuBar.add(helpMenu); 






    //FlightInfo setbounds 
    btnAddFlight.setBounds(30, 30, 120, 30); 
    btnLandFlight.setBounds(30, 80, 120, 30); 
    btnVirtualPath.setBounds(30, 130, 120, 30); 
    btnFlightDetails.setBounds(30, 180, 120, 30); 



    //JPanel bounds 
    pnlButton.setLayout(null); 



    //Adding to JFrame 
    pnlButton.add(btnAddFlight); 
    pnlButton.add(btnLandFlight); 
    pnlButton.add(btnVirtualPath); 
    pnlButton.add(btnFlightDetails); 


    main.add(pnlButton); 

    // JFrame properties 
    main.setJMenuBar(menuBar); 
    main.setLayout(null); 
    main.setBackground(Color.red); 
    main.setSize(800, 300); 


    main.setTitle("Air Traffic Control"); 

    main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    main.setVisible(true); 

    //Adding the actionlistener 
    //btnAddFlight.addActionListener(new AddFlight()); 
    //btnLandFlight.addActionListener(new LandFlight()); 







} 

public static void main(String[] args) { 

    new Control(); 

} 
} 

Je veux faire les JButtons apparaissent sur le JFrame.

Merci beaucoup

Répondre

3

Vous ne devez pas ajouter des widgets (pnlButton) directement au JFrame, vous devez les ajouter à un sous-panneau qui est automatiquement créé pour vous appelé le volet de contenu. Pour obtenir le volet contenu ne

Container cp = main.getContentPane(); 

donc alors faire

cp.add(pnlButton); 

Il est généralement une mauvaise idée d'utiliser une mise en page nulle avec le positionnement absolu, btw.

+0

j'ai supprimé le code de mise en page nulle et maintenant il fonctionne. Dois-je utiliser Container aussi. – Haxed