在JPanel上添加多个按钮和菜单按钮

时间:2015-02-26 14:51:31

标签: java swing

有没有办法在JPanel上添加多个JButton和Menu Buttons。 我正在使用borderLayout,这似乎不起作用我已经尝试使用流布局,但这似乎将按钮堆叠在一个特定的方向。

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 个答案:

答案 0 :(得分:2)

您可以使用BorderLayout将一个组件放到一个方向,似乎您需要选择其他LayoutManager。似乎GridBagLayout可以帮助你。

同样建议不要将JMenu / JMenuBar / JMenuItem放置到JPanel,您需要将JMenuBar设置为JFrame

答案 1 :(得分:0)

尝试查看Swingdesigner。它将为您提供一个WYSIWYG界面,您可以使用它来研究代码。

了解如何在代码中执行此操作非常重要,但界面将有助于指导您。