Из моего кода я ожидаю, что моя JTextArea заполнить верхний левый край показано ниже: JTextArea обыкновение заполнить панель с GridBagConstraints
Но как вы можете видеть его взятие крошечный разрез в середине. Я использую GridBagConstraints на панели, которая содержит компоненты.
Существует основной класс, который вызывает класс под названием frame. Этот класс создает JFrame и задает размер, а также другие вещи. Затем он вызывается из MainFrame.java, который расширил jframe, который создает 3 панели и устанавливает их макет. это видно ниже
import javax.swing.*;
import java.awt.*;
public class MainFrame extends JFrame
{
private Panel1 storyPanel;
private Panel2 statsPanel;
private Panel3 commandsPanel;
public MainFrame(String title)
{
super(title);
// Setting Layout
GridBagConstraints gbc = new GridBagConstraints();
storyPanel = new Panel1();
storyPanel.setLayout(new GridBagLayout());
statsPanel = new Panel2();
commandsPanel = new Panel3();
Container p = getContentPane();
p.add(storyPanel, BorderLayout.WEST);
p.add(statsPanel, BorderLayout.EAST);
p.add(commandsPanel, BorderLayout.SOUTH);
}
}
Панель в вопросах - Panel1 или storyPanel. Я поставил макет и код вызывает Panel1.java, как показано ниже:
import javax.swing.*;
import java.awt.*;
public class Panel1 extends JPanel
{
public Panel1()
{
GridBagConstraints gbc = new GridBagConstraints();
//Set size of Panel1
int xsizeP1 = (Frame.xsize()/2);
int ysizeP1 = (Frame.ysize()/3 * 2);
setPreferredSize(new Dimension(xsizeP1, ysizeP1));
setBorder(BorderFactory.createLineBorder(Color.black));
//Adding JTextArea and adding settings to it
JTextArea storyLine = new JTextArea(" test ");
storyLine.setLineWrap(true);
storyLine.setWrapStyleWord(true);
storyLine.setEditable(false);
//Adding JScrollPane to the JTextArea and making it have a vertical scrollbar
JScrollPane scroll = new JScrollPane(storyLine);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//GridBagConstraints setup for components
gbc.gridx = 0;
gbc.gridy = 0;
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.fill = GridBagConstraints.VERTICAL;
add(scroll, gbc);
}
}
Я не понимаю, почему мой gbc.fill разве что делает JTextArea заполнить верхнюю левую границу экрана выстрела.
Заранее спасибо за любой ответ в
-Tom T
изменение раскладки расположение границ
import javax.swing.*;
import java.awt.*;
public class Panel1 extends JPanel
{
public Panel1()
{
//GridBagConstraints gbc = new GridBagConstraints();
//gbc.weightx = 0.1;
//gbc.weighty = 0.1;
BorderLayout b = new BorderLayout();
//Set size of Panel1
int xsizeP1 = (Frame.xsize()/2);
int ysizeP1 = (Frame.ysize()/3 * 2);
setPreferredSize(new Dimension(xsizeP1, ysizeP1));
setBorder(BorderFactory.createLineBorder(Color.black));
//Adding JTextArea and adding settings to it
JTextArea storyLine = new JTextArea(" test ");
storyLine.setLineWrap(true);
storyLine.setWrapStyleWord(true);
storyLine.setEditable(false);
//Adding JScrollPane to the JTextArea and making it have a vertical scrollbar
JScrollPane scroll = new JScrollPane(storyLine);
scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
scroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
//gbc.gridx = 0;
//gbc.gridy = 0;
//gbc.weightx = 1;
//gbc.weighty = 1;
//gbc.fill = GridBagConstraints.BOTH;
add(scroll, b.CENTER);
}
}
Не беспокойтесь о настройке xsize и ysize кода для тех, что находится в Frame.java, который не нужен для вопроса. Если требуется какая-либо другая информация, просто спросите. –
Не устанавливайте макет storyPanel снова. Используйте GridBagConstaints.BOTH для ограничения заполнения и используйте weightx и weighty, чтобы указать количество оставшегося пространства, которое должен занимать компонент.На основе вашего кода было бы проще использовать BorderLayout вместо – MadProgrammer
Я попробовал макет границы и установил его в центр, ожидая его изменения размера, но это тоже не удалось, я попробую ваши предложения, спасибо, –