如何在使用Swing时划分窗户?

用户名

我正在用Java编写程序,并且正在学习Swing,但似乎遇到了障碍。我已经附上了一张草图来解释我要做什么,希望您能帮助我理解该做什么。

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

我正在使用JFrames和JPanels构造此程序,但是我不明白如何制作内容的两个框架。另外,我希望左列的宽度始终为150px,框架的整个高度为高,而右列的宽度应始终为窗口的其余宽度。

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

}

}
卡米克尔

阅读Swing教程中有关如何使用边框布局的部分

一个组成部分去BorderLayout.LINE_START对方BorderLayout.CENTER

另外,我希望左列的宽度始终为150px

宽度由添加到BorderLayout的该区域的组件的首选大小确定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Xubuntu上使用Compiz的同时自定义窗户装饰?

来自分类Dev

如何在Xubuntu上使用Compiz的同时自定义窗户装饰?

来自分类Dev

如何在Azure中使用Kusto划分计数数字?

来自分类Dev

如何在不使用//的情况下划分python?

来自分类Dev

如何在Swing中使用HTML

来自分类Dev

如何在Scala Swing中使用Actionlistener

来自分类Dev

如何在Swing中使用HTML

来自分类Dev

如何在 Swing 中使用 GridLayout?

来自分类Dev

如何在窗户上写水银钩?

来自分类Dev

如何在Compiz的窗户装饰上应用例外?

来自分类Dev

如何在QMainWindow上调整窗户的装饰尺寸?

来自分类Dev

如何在Compiz的窗户装饰上应用例外?

来自分类Dev

如何在选择时进行划分视图和显示颜色的布局?

来自分类Dev

如何在R中将给定的时间序列数据集划分为4小时窗口

来自分类Dev

如何使用php进行划分

来自分类Dev

如何使用OpenCV从建筑物的图片计算窗户的尺寸?

来自分类Dev

如何拆开窗户

来自分类Dev

如何改变窗户的音量?

来自分类Dev

如何在c中划分2 int?

来自分类Dev

如何在MATLAB中划分矩阵的列?

来自分类Dev

如何在图块中划分图像?

来自分类Dev

如何在Python中划分多层列

来自分类Dev

如何在R中划分组

来自分类Dev

如何在图块中划分图像?

来自分类Dev

如何在SQL中划分学生

来自分类Dev

如何在jQuery中划分div?

来自分类Dev

如何在 Laravel 中划分两列?

来自分类Dev

多次克隆表单时,如何使用javascript或jquery自动滚动到关注的输入字段划分

来自分类Dev

使用Fragment Factory时如何对带有碎片的Dagger依赖项进行范围划分?