2013-12-03 6 views
0

В принципе, я пытаюсь сделать так, что в нижней части экрана есть 3 кнопки, а затем есть метка, в которой есть слова в середине экрана. Тем не менее, я не могу иметь одновременно кнопки и ярлык в графическом интерфейсе. Я новичок и не очень разбираюсь в макетах (даже если я их прочитал), поэтому любая помощь/руководство будет полезна для того, почему я не вижу ярлыка и кнопки. enter code hereскрытые ярлыки/панели в java

import java.awt.Dimension; 
import java.awt.Insets; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.Box; 
import javax.swing.BoxLayout; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.border.EmptyBorder; 

public class AWorldPanel implements ActionListener { 

    /** Declaring all the menu items within the GUI **/ 
    private JMenuItem Fileitem1 = new JMenuItem("New configuration"); 
    private JMenuItem Fileitem2 = new JMenuItem("Open configuration file "); 
    private JMenuItem Fileitem3 = new JMenuItem("Save"); 
    private JMenuItem Fileitem4 = new JMenuItem("Save As"); 
    private JMenuItem Fileitem5 = new JMenuItem("Exit"); 
    private JMenuItem Viewitem1 = new JMenuItem("Display configuration"); 
    private JMenuItem Viewitem2 = new JMenuItem("Edit configuration"); 
    private JMenuItem Viewitem3 = new JMenuItem("Info about Bugs"); 
    private JMenuItem Viewitem4 = new JMenuItem("Info about Map"); 
    private JMenuItem Edititem1 = new JMenuItem("Remove"); 
    private JMenuItem Edititem2 = new JMenuItem("Add"); 
    private JMenuItem Simulationitem1 = new JMenuItem("Simulation"); 
    private JMenuItem Helpitem1 = new JMenuItem("Info about application"); 
    private JMenuItem Helpitem2 = new JMenuItem("Info about author"); 
    private JLabel theLabel; 
    private JPanel thePanel; 
    JButton Run, Pause, Reset; 
    JFrame GUI = new JFrame("Graphical User Interface"); 
    private static AWorld guiworld; 

    public AWorldPanel() { 
     /** Creating the menu **/ 
     JMenuBar menubar = new JMenuBar(); 
     JMenu File = new JMenu("File"); 
     JMenu View = new JMenu("View"); 
     JMenu Edit = new JMenu("Edit"); 
     JMenu Help = new JMenu("Help"); 

     /** welcome label **/ 
     theLabel = new JLabel("Hello ", JLabel.CENTER); 
     theLabel.setVisible(true); 
     theLabel.setVerticalTextPosition(JLabel.TOP); 
     theLabel.setHorizontalTextPosition(JLabel.CENTER); 

     /** file sub menus **/ 
     menubar.add(File); 
     File.add(Fileitem1); 
     File.add(Fileitem2); 
     File.add(Fileitem3); 
     File.add(Fileitem4); 
     File.add(Fileitem5); 

     menubar.add(View); 
     View.add(Viewitem1); 
     View.add(Viewitem2); 
     View.add(Viewitem3); 
     View.add(Viewitem4); 

     menubar.add(Edit); 
     Edit.add(Edititem1); 
     Edit.add(Edititem2); 

     menubar.add(Help); 
     Help.add(Helpitem1); 
     Help.add(Helpitem2); 

     JPanel panel = new JPanel(); 
     panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS)); 
     panel.setBorder(new EmptyBorder(new Insets(300, 125, 100, 100))); 

     Run = new JButton("Run"); 
     Pause = new JButton("Pause"); 
     Reset = new JButton("Reset"); 
     panel.add(Run); 
     panel.add(Box.createRigidArea(new Dimension(0, 5))); 
     panel.add(Pause); 
     panel.add(Box.createRigidArea(new Dimension(0, 5))); 
     panel.add(Reset); 

     GUI.add(panel); 
     GUI.add(theLabel); 
     GUI.setJMenuBar(menubar); 
    } 

    private static void createAndShowGUI() { 
     AWorldPanel newworld = new AWorldPanel(); 

     // Create the container 
     JFrame frame = new JFrame("Graphical User Interface"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     // changing the menu settings 
     newworld.GUI.setLocation(300, 100); 
     newworld.GUI.setSize(500, 500); 
     newworld.GUI.setVisible(true);// Now the frame will appear on screen 
    } 

    public static void main(String args[]) { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 

ответ

3

менеджер компоновки по умолчанию для JFrame является BorderLayout. Если вы не укажете ограничение, компонент будет добавлен к BorderLayout.CENTER. Вы не можете добавить несколько компонентов в одно и то же место в макете. Попробуйте что-то вроде:

GUI.add(panel, BorderLayout.SOUTH); 
    GUI.add(theLabel, BorderLayout.CENTER); 

Также изучите стандартные соглашения об именах Java. Каждая книга, учебник или пример, который вы прочтете, использует эти стандарты, поэтому не составляйте свои собственные соглашения. Имена переменных do not начинаются с символа верхнего регистра.

Смежные вопросы