1

Java インターフェイスに問題があります。メニューバーとツールバーをいくつかのラベルとテキストフィールドと一緒に表示したいのですが、gridbaglayout を使用するたびにラベルとテキストフィールドが表示されず、メニューバーとツールバーしか表示されません。この問題について私を助けてくれませんか、私はこの問題についてMr.G(google)を検索しましたが、私の問題の適切な解決策を見つけることができません.私はJavaの初心者であり、使用するプログラミング言語としてJavaが欲しいです私の次のプロジェクト。

ここに私のコードがあります:

    package Forms;
import javax.swing.*;
import java.awt.*;
public class CompleteGridLayout {
    static JFrame frame;
    static JPanel panel, panelData;
    static JMenuBar menuBar;
    static JMenu menuFile, menuSetting, menuOption;
    static JMenuItem itemNew, itemOpen, itemSave, itemPrint, itemOption, itemClose, itemView, itemReports;
    static JToolBar toolBar;
    static Icon iconMenu;
    static JButton barSave, barEdit, barClear, barDelete;
    static ButtonGroup group;
    static JRadioButtonMenuItem subFont1, subFont2, subFont3, subFont4, subFont5;
    static JCheckBoxMenuItem checkPrefer;
    static JLabel label;
    static JTextField textFirst, textMiddle, textLast;
    static JCheckBox checkGender;

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

        frame = new JFrame("Complete GridBag Layout Interface");
        //frame.setResizable(false);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);

        panel = new JPanel();
        panel.setLayout(new GridBagLayout());
        frame.getContentPane().add(panel);
        CompleteGridLayout myMenu = new CompleteGridLayout();
        myMenu.MyMenuBar();
        myMenu.MyToolBar();

        GridBagConstraints bag = new GridBagConstraints();
        bag.anchor = GridBagConstraints.CENTER;
        bag.gridx = 0;
        bag.gridy = 3;
        panel.add(dataPanel(), bag);


        frame.pack();
        frame.setVisible(true);
    }

    public static JPanel dataPanel()
    {

        panelData = new JPanel();
        label = new JLabel("First Name: ");
        textFirst = new JTextField(10);
        panelData.setLayout(new GridBagLayout());
        GridBagConstraints bagData = new GridBagConstraints();
        int i = 0;
        bagData.gridx = 1;
        bagData.gridy = i;
        bagData.gridwidth = 2;
        bagData.fill = GridBagConstraints.HORIZONTAL;
        panelData.add(textFirst, bagData);

        bagData.gridx = 0;
        bagData.gridy = i;
        bagData.gridwidth = 1;
        bagData.fill = GridBagConstraints.NONE;
        panelData.add(label, bagData);
        i++;
        return panelData;
    }

    public void MyToolBar()
    {   

        toolBar = new JToolBar(JToolBar.HORIZONTAL);
        frame.add(toolBar);


        iconMenu = new ImageIcon(getClass().getResource("icons/save-bar.png"));
        barSave = new JButton("Save", iconMenu);
        toolBar.add(barSave);

        iconMenu = new ImageIcon(getClass().getResource("icons/edit-bar.png"));
        barEdit = new JButton("Edit", iconMenu);
        toolBar.add(barEdit);

        iconMenu = new ImageIcon(getClass().getResource("icons/clear-bar.png"));
        barClear = new JButton("Clear", iconMenu);
        toolBar.add(barClear);

        iconMenu = new ImageIcon(getClass().getResource("icons/delete-bar.png"));
        barDelete = new JButton("Delete", iconMenu);
        toolBar.add(barDelete);
    }
    public void MyMenuBar()
    {
        menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);

        //Menus
        menuFile = new JMenu("File");
        menuBar.add(menuFile);

        iconMenu = new ImageIcon(getClass().getResource("icons/new.png"));
        itemNew = new JMenuItem("New", iconMenu);
        menuFile.add(itemNew);

        iconMenu = new ImageIcon(getClass().getResource("icons/open.png"));
        itemOpen = new JMenuItem("Open", iconMenu);
        menuFile.add(itemOpen);

        iconMenu = new ImageIcon(getClass().getResource("icons/save.png"));
        itemSave = new JMenuItem("Save", iconMenu);
        menuFile.add(itemSave);

        menuFile.addSeparator();

        iconMenu = new ImageIcon(getClass().getResource("icons/print.png"));
        itemPrint = new JMenuItem("Print", iconMenu);
        menuFile.add(itemPrint);
        menuFile.addSeparator();

        menuSetting = new JMenu("Settings");
        menuFile.add(menuSetting);
        group = new ButtonGroup();

        subFont1 = new JRadioButtonMenuItem("10 Pixel");
        menuSetting.add(subFont1);
        group.add(subFont1);

        subFont2 = new JRadioButtonMenuItem("12 Pixel");
        menuSetting.add(subFont2);
        group.add(subFont2);

        subFont3 = new JRadioButtonMenuItem("14 Pixel");
        menuSetting.add(subFont3);
        group.add(subFont3);

        subFont4 = new JRadioButtonMenuItem("16 Pixel");
        menuSetting.add(subFont4);
        group.add(subFont4);

        subFont5 = new JRadioButtonMenuItem("24 Pixel");
        menuSetting.add(subFont5);
        group.add(subFont5);
        menuSetting.addSeparator();

        checkPrefer = new JCheckBoxMenuItem("Preference");
        menuSetting.add(checkPrefer);
        group.add(checkPrefer);

        iconMenu = new ImageIcon(getClass().getResource("icons/close.png"));
        itemClose = new JMenuItem("Close", iconMenu);
        menuFile.add(itemClose);

        menuOption = new JMenu("Option");
        menuBar.add(menuOption);

        iconMenu = new ImageIcon(getClass().getResource("icons/view.png"));
        itemView = new JMenuItem("View Users", iconMenu);
        menuOption.add(itemView);

        iconMenu = new ImageIcon(getClass().getResource("icons/report.png"));
        itemReports = new JMenuItem("Reports", iconMenu);
        menuOption.add(itemReports);
    }
}

ところで、私はテスト目的でのみラベルとテキストフィールドを 1 つだけ使用しました。

4

2 に答える 2

2

BorderLayout以下に示すように、フレームのデフォルトを使用することもできます。

@Mad のコメントとして、コードをリファクタリングしてインスタンス変数の増殖を減らすことを検討してください。

画像

import java.awt.*;
import javax.swing.*;

public class CompleteGridLayout {

    static JFrame frame;
    static JPanel panel, panelData;
    static JMenuBar menuBar;
    static JMenu menuFile, menuSetting, menuOption;
    static JMenuItem itemNew, itemOpen, itemSave, itemPrint, itemOption, itemClose, itemView, itemReports;
    static JToolBar toolBar;
    static Icon iconMenu = UIManager.getIcon("html.pendingImage");
    static JButton barSave, barEdit, barClear, barDelete;
    static ButtonGroup group;
    static JRadioButtonMenuItem subFont1, subFont2, subFont3, subFont4, subFont5;
    static JCheckBoxMenuItem checkPrefer;
    static JLabel label;
    static JTextField textFirst, textMiddle, textLast;
    static JCheckBox checkGender;

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                gui();
            }
        });
    }

    public static void gui() {

        frame = new JFrame("Complete GridBag Layout Interface");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300, 300);

        CompleteGridLayout myMenu = new CompleteGridLayout();
        myMenu.myMenuBar();
        myMenu.myToolBar();
        frame.setJMenuBar(menuBar);
        frame.add(dataPanel(), BorderLayout.CENTER);
        frame.add(toolBar, BorderLayout.SOUTH);

        frame.pack();
        frame.setVisible(true);
    }

    public static JPanel dataPanel() {

        panelData = new JPanel();
        label = new JLabel("First Name: ");
        textFirst = new JTextField(10);
        panelData.setLayout(new GridBagLayout());
        GridBagConstraints bagData = new GridBagConstraints();
        int i = 0;
        bagData.gridx = 1;
        bagData.gridy = i;
        bagData.gridwidth = 2;
        bagData.fill = GridBagConstraints.HORIZONTAL;
        panelData.add(textFirst, bagData);

        bagData.gridx = 0;
        bagData.gridy = i;
        bagData.gridwidth = 1;
        bagData.fill = GridBagConstraints.NONE;
        panelData.add(label, bagData);
        i++;
        return panelData;
    }

    public void myToolBar() {

        toolBar = new JToolBar(JToolBar.HORIZONTAL);
        frame.add(toolBar);


        barSave = new JButton("Save", iconMenu);
        toolBar.add(barSave);

        barEdit = new JButton("Edit", iconMenu);
        toolBar.add(barEdit);

        barClear = new JButton("Clear", iconMenu);
        toolBar.add(barClear);

        barDelete = new JButton("Delete", iconMenu);
        toolBar.add(barDelete);
    }

    public void myMenuBar() {
        menuBar = new JMenuBar();
        frame.setJMenuBar(menuBar);

        //Menus
        menuFile = new JMenu("File");
        menuBar.add(menuFile);

        itemNew = new JMenuItem("New", iconMenu);
        menuFile.add(itemNew);

        itemOpen = new JMenuItem("Open", iconMenu);
        menuFile.add(itemOpen);

        itemSave = new JMenuItem("Save", iconMenu);
        menuFile.add(itemSave);

        menuFile.addSeparator();

        itemPrint = new JMenuItem("Print", iconMenu);
        menuFile.add(itemPrint);
        menuFile.addSeparator();

        menuSetting = new JMenu("Settings");
        menuFile.add(menuSetting);
        group = new ButtonGroup();

        subFont1 = new JRadioButtonMenuItem("10 Pixel");
        menuSetting.add(subFont1);
        group.add(subFont1);

        subFont2 = new JRadioButtonMenuItem("12 Pixel");
        menuSetting.add(subFont2);
        group.add(subFont2);

        subFont3 = new JRadioButtonMenuItem("14 Pixel");
        menuSetting.add(subFont3);
        group.add(subFont3);

        subFont4 = new JRadioButtonMenuItem("16 Pixel");
        menuSetting.add(subFont4);
        group.add(subFont4);

        subFont5 = new JRadioButtonMenuItem("24 Pixel");
        menuSetting.add(subFont5);
        group.add(subFont5);
        menuSetting.addSeparator();

        checkPrefer = new JCheckBoxMenuItem("Preference");
        menuSetting.add(checkPrefer);
        group.add(checkPrefer);

        itemClose = new JMenuItem("Close", iconMenu);
        menuFile.add(itemClose);

        menuOption = new JMenu("Option");
        menuBar.add(menuOption);

        itemView = new JMenuItem("View Users", iconMenu);
        menuOption.add(itemView);

        itemReports = new JMenuItem("Reports", iconMenu);
        menuOption.add(itemReports);
    }
}
于 2012-08-28T04:56:14.017 に答える
1

わかりました、コードを作り直したので、(少なくとも私にとっては)理にかなっています...

panel = new JPanel();
panel.setLayout(new GridBagLayout());
getContentPane().add(panel);
createMenuBar();
// Your problem is here.  This will add the toolbar to the contentPane, 
// removing the "panel" that you previously added...
createToolBar();

GridBagConstraints bag = new GridBagConstraints();
bag.anchor = GridBagConstraints.CENTER;
bag.gridx = 0;
bag.gridy = 3;
panel.add(dataPanel(), bag);

これがツールバーです

public void createToolBar() {
    toolBar = new JToolBar(JToolBar.HORIZONTAL);
    add(toolBar); // This works like getContentPane().add(toolBar);
于 2012-08-28T05:02:54.103 に答える