Как я могу заставить Jpanel заполнить оставшееся пространство внутри другой панели?JAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу заставить Jpanel заполнить оставшееся пространство внутри другой панели?

Сообщение Anonymous »

Я начал работать с Swing несколько дней назад и пытался создать пользовательский интерфейс для текстового редактора, подобный тому, который я прикрепил ниже.
Изображение

Может быть, это глупый вопрос, но я создал панель инструментов и добавил рамку, но когда я пытаюсь добавить панель для рисования он не занимает все остальное пространство?
Изображение

Вот код, может кто-нибудь сказать мне, что я делаю неправильно?

Код: Выделить всё

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

public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Text Editor");
GraphicsDevice graphicsDevice = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
GraphicsConfiguration config = graphicsDevice.getDefaultConfiguration();
frame.setSize(config.getBounds().getSize());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());

menuBar(frame);
sketchPad(frame);

frame.setVisible(true);

}

public static void menuBar(JFrame frame){
JMenuBar menuBar = new JMenuBar();
JMenu file= new JMenu("File");
String[] fileItems = {"New Tab","New Window","Open","Save","Save As","Save All", "Page Setup","Print","Close Tab","Close Window","Exit"};
for(String item:fileItems){
JMenuItem menuItem = new JMenuItem(item);
file.add(menuItem);
}
menuBar.add(file);

JMenu edit = new JMenu("Edit");
String[] editItems = {"Undo","Cut","Copy","Paste","Delete","Go To","Select All","Time/Date"};
for(String item:editItems){
JMenuItem menuItem = new JMenuItem(item);
edit.add(menuItem);
}
menuBar.add(edit);

JMenu review = new JMenu("Review");
String[] reviewItems = {"Zoom","Status Bar","Word Wrap"};
for(String item:reviewItems){
if(item.equals("Zoom")){
JMenu subMenu = new JMenu("Zoom");
JMenuItem in,out,setDefault;
in = new JMenuItem("Zoom In");
subMenu.add(in);
out = new JMenuItem("Zoom Out");
subMenu.add(out);
setDefault = new JMenuItem("Default");
subMenu.add(setDefault);
review.add(subMenu);
}else {
JMenuItem menuItem = new JMenuItem(item);
review.add(menuItem);
}
}
menuBar.add(review);

JMenu help = new JMenu("Help");
String[] helpItems = {"Help","About"};
for(String item:helpItems){
JMenuItem menuItem = new JMenuItem(item);
help.add(menuItem);
}
menuBar.add(help);

frame.setJMenuBar(menuBar);
}

public static void sketchPad(JFrame frame){
JPanel sketchPad = new JPanel();
sketchPad.setLayout(new BorderLayout());
sketchPad.add(new JLabel("Sketch Pad"),BorderLayout.NORTH);
JPanel toolBar = new JPanel();
toolBar.setLayout(new FlowLayout());
toolBar.add(new JButton("Rectangle"));
toolBar.add(new JButton("Circle"));
toolBar.add(new JButton("Line"));
toolBar.add(new JButton("Triangle"));
toolBar.add(new JButton("Pentagon"));
toolBar.add(new JButton("Clear"));
sketchPad.add(toolBar,BorderLayout.CENTER);
JPanel drawingPad = new JPanel();
drawingPad.setBackground(Color.GRAY);
sketchPad.add(drawingPad,BorderLayout.SOUTH);
sketchPad.setBorder(BorderFactory.createLineBorder(Color.black));
frame.add(sketchPad,BorderLayout.EAST);
}
}
Я пробовал использовать методы setMinimumSize, setSize, getPreferedSize, но ничего не помогает. Если я поменяю макет, все испортится


Подробнее здесь: https://stackoverflow.com/questions/774 ... -another-p

Вернуться в «JAVA»