gpt4 book ai didi

java - 使用 Swing 如何划分窗口?

转载 作者:行者123 更新时间:2023-11-30 04:10:56 25 4
gpt4 key购买 nike

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

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

我正在使用 JFrameJPanel 来构建此程序,但我无法理解如何为内容制作两个框架。另外,我希望左栏始终为 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 教程中关于 How to Use Border Layout 的部分.

一个组件转到 BorderLayout.LINE_START,另一个组件转到 BorderLayout.CENTER

Also, I want the left column to always be 150px wide

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

关于java - 使用 Swing 如何划分窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19613800/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com