java桌面应用程序

时间:2010-08-15 05:16:44

标签: java

我正在netbeans中创建一个桌面应用程序,我希望在我的菜单栏中如果我选择一个新的菜单项,而不是下面的面板更改不是全帧。所以它看起来像我在一个框架上工作.can任何人帮助我

1 个答案:

答案 0 :(得分:2)

您可以使用Card Layout Managers来实现此类功能。

这是完整的例子:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

class JMenuExample extends JFrame implements ActionListener {

    JMenu menu;
    JPanel panelMain;
    JPanel panelRed;
    JPanel panelBlue;

    CardLayout layout;

    public void createUI() {
        createMenu();
        createPanels();

    }

    private void createPanels() {
        panelMain = new JPanel();
        layout = new CardLayout();
        panelMain.setLayout(layout);

        panelRed = new JPanel();
        panelRed.setBackground(Color.RED);
        panelMain.add(panelRed, "Red");
        panelBlue = new JPanel();
        panelBlue.setBackground(Color.BLUE);
        panelMain.add(panelBlue, "Blue");

        add(panelMain);

    }

    private void createMenu() {
        menu = new JMenu("Change To");
        JMenuItem miRed = new JMenuItem("Red");
        miRed.addActionListener(this);
        menu.add(miRed);
        JMenuItem miBlue = new JMenuItem("Blue");
        miBlue.addActionListener(this);
        menu.add(miBlue);

        JMenuBar bar = new JMenuBar();
        bar.add(menu);

        setJMenuBar(bar);

    }

    public static void main(String[] args) {

        JMenuExample frame = new JMenuExample();
        frame.createUI();
        frame.setSize(150, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() instanceof JMenuItem) {
            JMenuItem mi = (JMenuItem) e.getSource();
            layout.show(panelMain, mi.getText());

        }
    }
}

希望这有帮助

相关问题