1

私は Java でプログラムを書いており、Swing を学びながら学んでいますが、障害があるようです。私がやろうとしていることを説明するスケッチを添付しました。何をすべきかを理解するのに役立つことを願っています。

+===============================================================================+
|File Edit View Help                                                            |
+================================================================================
|          |                                                                    |
|          |                                                                    |
|Content 1 |                Content 2                                           |
|          |                                                                    |
|          |                                                                    |
+===============================================================================+

JFrames とs を使用してJPanelこのプログラムを構築していますが、コンテンツの 2 つのフレームを作成する方法がわかりません。また、左の列は常に 150 ピクセルの幅で、フレームの高さ全体になり、右の列は常にウィンドウの残りの幅を埋める必要があります。

package mycookbook;

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;

public class MyCookBook extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;

public static void main(String[] args) {

    new MyCookBook();

}

public MyCookBook() {

    super("My Cook Book vers. 0.0.0.1");
    setSize(1920, 1030);
    setResizable(false);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    setVisible(true);

    setMenu();
    setWindows();

}

public void setMenu() {

    //Setting up the menubar.
    JMenuBar menubar = new JMenuBar();

    //Adding the menu bar.
    setJMenuBar(menubar);

    //Setting up the file menu.
    JMenu fileMenu = new JMenu("File");
    fileMenu.setMnemonic(KeyEvent.VK_F);

    JMenu nwFile = new JMenu("New >>");
    JMenuItem cbNwFile = new JMenuItem("Cookbook");
    JMenuItem chNwFile = new JMenuItem("Chapter");
    JMenuItem rcNwFile = new JMenuItem("Recipe");
    JMenu opFile = new JMenu("Open >>");
    JMenuItem cbOpFile = new JMenuItem("Cookbook");
    JMenuItem chOpFile = new JMenuItem("Chapter");
    JMenuItem rcOpFile = new JMenuItem("Recipe");
    JMenuItem svFile = new JMenuItem("Save");
    JMenuItem ipFile = new JMenuItem("Import");
    JMenuItem epFile = new JMenuItem("Export");
    JMenuItem pnFile = new JMenuItem("Print");
    JMenuItem upFile = new JMenuItem("Update");
    JMenuItem prFile = new JMenuItem("Properties");
    JMenuItem exFile = new JMenuItem("Exit");

    //Adding all the file menu and its contents to the menubar.
    menubar.add(fileMenu);
    fileMenu.add(nwFile);
    nwFile.add(cbNwFile);
    nwFile.add(chNwFile);
    nwFile.add(rcNwFile);
    fileMenu.add(opFile);
    opFile.add(cbOpFile);
    opFile.add(chOpFile);
    opFile.add(rcOpFile);
    fileMenu.addSeparator();
    fileMenu.add(svFile);
    fileMenu.add(ipFile);
    fileMenu.add(epFile);
    fileMenu.add(pnFile);
    fileMenu.addSeparator();
    fileMenu.add(upFile);
    fileMenu.add(prFile);
    fileMenu.addSeparator();

    fileMenu.add(exFile);

    exFile.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            System.exit(0);

        }

    });


    //Setting up the edit menu.
    JMenu editMenu = new JMenu("Edit");
    editMenu.setMnemonic(KeyEvent.VK_E);

    JMenuItem cbEdit =  new JMenuItem("Cookbook");
    JMenuItem chEdit =  new JMenuItem("Chapter");
    JMenuItem rcEdit =  new JMenuItem("Recipe");
    menubar.add(editMenu);
    editMenu.add(cbEdit);
    editMenu.add(chEdit);
    editMenu.add(rcEdit);

    //Setting up the view menu.
    JMenu viewMenu = new JMenu("View");
    viewMenu.setMnemonic(KeyEvent.VK_V);

    JMenu mdView = new JMenu("Mode >>");
    JMenuItem pnView = new JMenuItem("Panel View");
    JMenuItem pgView = new JMenuItem("Page View");
    JMenuItem lsView = new JMenuItem("List View");

    JMenu rsView = new JMenu("Resolution >>");
    JMenuItem smRes = new JMenuItem("1024x718");
    JMenuItem mdRes = new JMenuItem("1440x910");
    JMenuItem lgRes = new JMenuItem("1920x1030");



    menubar.add(viewMenu);
    viewMenu.add(mdView);
    viewMenu.add(rsView);
    mdView.add(pnView);
    mdView.add(pgView);
    mdView.add(lsView);
    rsView.add(smRes);
    rsView.add(mdRes);
    rsView.add(lgRes);

    smRes.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            setSize(1024,718);
            setLocationRelativeTo(null);

        }

    });

    mdRes.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            setSize(1440,910);
            setLocationRelativeTo(null);

        }

    });

    lgRes.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e) {

            setSize(1920,1030);
            setLocationRelativeTo(null);

        }

    });

    exFile.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                System.exit(0);

            }

    });

    //Setting up the help menu.
    JMenu helpMenu = new JMenu("Help");
    helpMenu.setMnemonic(KeyEvent.VK_H);

    JMenuItem hpHelp = new JMenuItem("My Cookbook Help");
    JMenuItem abHelp = new JMenuItem("About My Cookbook");
    menubar.add(helpMenu);
    helpMenu.add(hpHelp);
    helpMenu.add(abHelp);

    revalidate();

}

public void setWindows() {

    JScrollPane bookPane = new JScrollPane();       
    JScrollPane recPane = new JScrollPane();        
    JSplitPane content = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,bookPane, recPane);
    Dimension bpDim = new Dimension(150, 400);
    Dimension rpDim = new Dimension(650, 400);
    bookPane.setMinimumSize(bpDim);
    recPane.setMinimumSize(rpDim);

    add(content);

}

@Override
public void actionPerformed(ActionEvent arg0) {
    // TODO Auto-generated method stub

}

}
4

2 に答える 2

0

この問題は、GUI に別のレイアウトを使用することで簡単に解決できます。GridBagLayoutこのレイアウトは高度にカスタマイズできるので、チェックアウトすることをお勧めします。

問題を解決GridBagLayoutするのは非常に簡単です。GridBagConstraintsGridBagLayoutGridBagConstraints

ウィンドウの分割方法についてお聞きしましたが、シンプルに3つ作って、最上位に表示されるメインJPanelsに2つ入れるだけです。JPanelsJPanel

于 2013-10-27T01:49:24.527 に答える