使用不同的布局管理器不起作用
Using Different layout Managers Not Working
我要输出如下布局
但我的代码却输出了以下内容,我似乎不明白为什么。我正在创建 4 个 Jpanels
- Jpanel title to enclosed the label --> BorderLayout
- JPanel buttonPanel 包围 10x10 网格 --> GridLayout
- JPanel textPanel 包围 3 个 textAreas --> Grid Layout 3x1
- JPanel infoPanel 圈出 1 个 TextArea --> BorderLayout
然后我将 4 个 JPanel 中的每一个添加到 JFrame 作为边框布局,但这似乎不起作用,我不明白为什么。任何帮助将不胜感激。
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setTitle("Alien Invasion");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel title = new JPanel();
JLabel label1 = new JLabel("Invaded City");
title.add(label1);
frame.add(title, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(10, 10, 2, 2));
for (int i = 0; i < 100; i++)
buttonPanel.add(new JButton("Button" + (i + 1)));
frame.add(buttonPanel, BorderLayout.CENTER);
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridLayout(3, 1, 4, 4));
JTextArea availableUnits = new JTextArea();
availableUnits.setPreferredSize(new Dimension(200, 200));
availableUnits.setEditable(false);
availableUnits.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
availableUnits.setText("availableUnits\n ");
availableUnits.setLineWrap(true);
availableUnits.setWrapStyleWord(true); // words not broken up
textPanel.add(availableUnits);
JTextArea respondingUnits = new JTextArea();
respondingUnits.setPreferredSize(new Dimension(200, 200));
respondingUnits.setEditable(false);
respondingUnits.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
respondingUnits.setText("respondingUnits\n ");
respondingUnits.setLineWrap(true);
respondingUnits.setWrapStyleWord(true);
textPanel.add(respondingUnits);
JTextArea treatingUnits = new JTextArea();
treatingUnits.setPreferredSize(new Dimension(200, 200));
treatingUnits.setEditable(false);
treatingUnits.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
treatingUnits.setText("treatingUnits\n ");
treatingUnits.setLineWrap(true);
treatingUnits.setWrapStyleWord(true);
textPanel.add(treatingUnits);
frame.add(textPanel, BorderLayout.EAST);
JPanel infoPanel = new JPanel();
JTextArea informationDisplay = new JTextArea();
informationDisplay.setPreferredSize(new Dimension(frame.getWidth(), 200));
informationDisplay.setEditable(false);
informationDisplay.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
informationDisplay.setText("informationDisplay\n ");
informationDisplay.setLineWrap(true);
informationDisplay.setWrapStyleWord(true);
infoPanel.add(informationDisplay);
frame.add(infoPanel, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
您为某些 JTextArea 使用的构造函数是:
JTextArea(int rows, int columns)
所以您创建的它们有 200 行,很多。请改用 JtextArea()。
我要输出如下布局
但我的代码却输出了以下内容,我似乎不明白为什么。我正在创建 4 个 Jpanels
- Jpanel title to enclosed the label --> BorderLayout
- JPanel buttonPanel 包围 10x10 网格 --> GridLayout
- JPanel textPanel 包围 3 个 textAreas --> Grid Layout 3x1
- JPanel infoPanel 圈出 1 个 TextArea --> BorderLayout
然后我将 4 个 JPanel 中的每一个添加到 JFrame 作为边框布局,但这似乎不起作用,我不明白为什么。任何帮助将不胜感激。
JFrame frame = new JFrame();
frame.setSize(200, 200);
frame.setTitle("Alien Invasion");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel title = new JPanel();
JLabel label1 = new JLabel("Invaded City");
title.add(label1);
frame.add(title, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(10, 10, 2, 2));
for (int i = 0; i < 100; i++)
buttonPanel.add(new JButton("Button" + (i + 1)));
frame.add(buttonPanel, BorderLayout.CENTER);
JPanel textPanel = new JPanel();
textPanel.setLayout(new GridLayout(3, 1, 4, 4));
JTextArea availableUnits = new JTextArea();
availableUnits.setPreferredSize(new Dimension(200, 200));
availableUnits.setEditable(false);
availableUnits.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
availableUnits.setText("availableUnits\n ");
availableUnits.setLineWrap(true);
availableUnits.setWrapStyleWord(true); // words not broken up
textPanel.add(availableUnits);
JTextArea respondingUnits = new JTextArea();
respondingUnits.setPreferredSize(new Dimension(200, 200));
respondingUnits.setEditable(false);
respondingUnits.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
respondingUnits.setText("respondingUnits\n ");
respondingUnits.setLineWrap(true);
respondingUnits.setWrapStyleWord(true);
textPanel.add(respondingUnits);
JTextArea treatingUnits = new JTextArea();
treatingUnits.setPreferredSize(new Dimension(200, 200));
treatingUnits.setEditable(false);
treatingUnits.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
treatingUnits.setText("treatingUnits\n ");
treatingUnits.setLineWrap(true);
treatingUnits.setWrapStyleWord(true);
textPanel.add(treatingUnits);
frame.add(textPanel, BorderLayout.EAST);
JPanel infoPanel = new JPanel();
JTextArea informationDisplay = new JTextArea();
informationDisplay.setPreferredSize(new Dimension(frame.getWidth(), 200));
informationDisplay.setEditable(false);
informationDisplay.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 12));
informationDisplay.setText("informationDisplay\n ");
informationDisplay.setLineWrap(true);
informationDisplay.setWrapStyleWord(true);
infoPanel.add(informationDisplay);
frame.add(infoPanel, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
您为某些 JTextArea 使用的构造函数是:
JTextArea(int rows, int columns)
所以您创建的它们有 200 行,很多。请改用 JtextArea()。