2015-02-26 4 views
0

Есть ли способ добавить несколько кнопок JButtons и Menu на JPanel. Я использую borderLayout, и это, похоже, не работает. Я уже пытался использовать компоновку потока, но это, похоже, складывает кнопки в одном конкретном направлении.Добавление нескольких кнопок и кнопок меню на JPanel

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.File; 
import java.io.IOException; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.swing.JButton; 
import javax.swing.JMenu; 
import javax.swing.JMenuBar; 
import javax.swing.JMenuItem; 
import javax.swing.JPanel; 

public class Menu extends JPanel { 

    private JMenuBar menuBar; 
    private JMenu file; 
    private JMenu algorithms; 
    private JMenu help; 
    private JMenu notes; 
    private JMenuItem bubbleSort; 
    private JMenuItem insertionSort; 
    private JMenuItem selectionSort; 
    private JMenuItem mergeSort; 
    private JMenuItem quickSort; 
    private JMenuItem exit; 
    private JButton restartButton; 
    private Sorter sorter; 
    private JButton pauseButton; 
    private JButton startButton; 

    public Menu(String algorithmName) { 

     setLayout(new BorderLayout()); 


     menuBar = new JMenuBar(); 
     file = new JMenu("File"); 
     help = new JMenu("Help"); 
     notes = new JMenu("Notes"); 
     algorithms = new JMenu("Algorithms"); 
     exit = new JMenuItem("Exit"); 

     bubbleSort = new JMenuItem("BubbleSort"); 
     quickSort = new JMenuItem("QuickSort"); 
     insertionSort = new JMenuItem("InsertionSort"); 
     selectionSort = new JMenuItem("SelectionSort"); 
     mergeSort = new JMenuItem("MergeSort"); 
     restartButton = new JButton("Restart Algorithm"); 
     pauseButton = new JButton("Pause"); 
     startButton = new JButton("Start"); 

     file.add(algorithms); 
     file.add(exit); 
     algorithms.add(bubbleSort); 
     algorithms.add(insertionSort); 
     algorithms.add(selectionSort); 
     algorithms.add(mergeSort); 
     algorithms.add(quickSort); 

     menuBar.add(file); 
     menuBar.add(notes); 
     menuBar.add(help); 

     add(restartButton, BorderLayout.EAST); 
     add(pauseButton,BorderLayout.EAST); 
     add(startButton,BorderLayout.EAST); 
     add(menuBar,BorderLayout.WEST); 
+2

Почему вы добавляете 'JMenuBar' в' JPanel'? Я рекомендую сделать некоторые чтения о том, как создавать меню: http://docs.oracle.com/javase/tutorial/uiswing/components/menu.html –

+1

И вот еще несколько сведений о разных менеджерах макетов: http: // docs. oracle.com/javase/tutorial/uiswing/layout/ –

ответ

2

Вы можете разместить один компонент в одном направлении с BorderLayout, кажется, вам нужно выбрать другой LayoutManager. Кажется, GridBagLayout может вам помочь.

Кроме того, как рекомендуется не размещать JMenu/JMenuBar/JMenuItem к JPanel, вам потребуется задать JMenuBar для JFrame.

0

Попробуйте также взглянуть на Swingdesigner. Это даст вам интерфейс WYSIWYG, который вы можете использовать для изучения кода.

Важно знать, как это сделать в коде, но интерфейс поможет вам.

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