Java 如何调整JPanel的大小
我正在尝试调整JPanel的大小,但它下面有一个空间。这里有一个链接显示:Java 如何调整JPanel的大小,java,swing,jpanel,Java,Swing,Jpanel,我正在尝试调整JPanel的大小,但它下面有一个空间。这里有一个链接显示: And this is the code : import java.awt.*; import javax.swing.*; public class Ex1 extends JFrame{ private JTextArea textarea = new JTextArea (); private JTextField field = new JTextField ();`` private JButton
And this is the code :
import java.awt.*;
import javax.swing.*;
public class Ex1 extends JFrame{
private JTextArea textarea = new JTextArea ();
private JTextField field = new JTextField ();``
private JButton buton = new JButton ("Trimite");
public Ex1(){
JPanel panel = new JPanel (new BorderLayout(2,2));
JPanel panel1 = new JPanel (new BorderLayout(2,2));
JPanel panel2 = new JPanel (new BorderLayout(2,2));
JLabel label1 = new JLabel ("Mesaje");
JLabel label2 = new JLabel ("Scrieti un mesaj");
panel1.setPreferredSize(new Dimension(350,100));
panel2.setPreferredSize(new Dimension(350,25));
panel1.add(label1, BorderLayout.NORTH);
panel1.add(textarea, BorderLayout.CENTER);
panel2.add(label2, BorderLayout.WEST);
panel2.add(field, BorderLayout.CENTER);
panel2.add(buton, BorderLayout.EAST);
setLayout(new GridLayout(2,1,1,1));
panel.add(panel1, BorderLayout.NORTH);
panel.add(panel2, BorderLayout.CENTER);
add(panel);
}
public static void main(String[] args) {
JFrame frame = new Ex1();
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}您需要调整JFrame而不是JPanel的大小。尝试:
this.setPreferredSize(new Dimension(350, 25);// in Ex1
或者在您的主要方法中:
frame.setPreferredSize(new Dimension(350, 25);
您需要调整JFrame而不是JPanel的大小。尝试:
this.setPreferredSize(new Dimension(350, 25);// in Ex1
或者在您的主要方法中:
frame.setPreferredSize(new Dimension(350, 25);
您正在将框架的布局设置为
GridLayout
,其中所有组件的大小都相同。您有两行,add(panel)
将面板添加到网格的第一行。第二行留空。看
注释掉setLayout(新的GridLayout(2,1,1,1))代码>和多余的空间应该消失。注释此行时,框架内容窗格的布局将为BorderLayout
。JFrame
的默认布局是BorderLayout
。So<代码>添加(面板)代码>将面板添加到框架内容窗格的中心。因此,面板应占据所有可用空间
作为旁注,请避免设置PreferredSize()
,通常不需要,请参阅以了解详细信息
您可以指定文本区域的行数和列数,并将其包装在滚动窗格中,即:
textArea = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(textArea);
有关更多详细信息,请参阅
编辑:getPreferredSize()的示例
您正在将框架的布局设置为
GridLayout
,其中所有组件的大小都相同。您有两行,add(panel)
将面板添加到网格的第一行。第二行留空。看
注释掉setLayout(新的GridLayout(2,1,1,1))代码>和多余的空间应该消失。注释此行时,框架内容窗格的布局将为BorderLayout
。JFrame
的默认布局是BorderLayout
。So<代码>添加(面板)代码>将面板添加到框架内容窗格的中心。因此,面板应占据所有可用空间
作为旁注,请避免设置PreferredSize()
,通常不需要,请参阅以了解详细信息
您可以指定文本区域的行数和列数,并将其包装在滚动窗格中,即:
textArea = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(textArea);
有关更多详细信息,请参阅
编辑:getPreferredSize()的示例
那是框架,不是面板。调整框架大小如果你有足够的时间和耐心…一种方法是你使用绝对布局(对于非常小的项目……它有更多的时间…但是你可以将每个组件安排在你想要的绝对位置和大小…:-)那是框架,不是面板。调整框架大小如果你有足够的时间和耐心…一种方法是你使用绝对布局(对于非常小的项目……它有更多的时间…但是你可以将每个组件安排在你想要的绝对位置和大小…:-)非常感谢。真的很有帮助还有一个问题:如果我希望帧的大小为350 x 300英寸,只显示第一个面板:-(@Angelo如何设置350x300大小?是的。主要是我想要“frame.setSize(350300))@Angelo I无法在仅显示一个面板的情况下真实再现这种情况。在任何情况下,请为文本组件指定所需的行数和列数。还要覆盖
getPreferredSize()
(添加到框架内容中的面板)的以返回(350300)。然后pack()
框架。您可能还希望将panel1
放在中心
和panel2
放在南部
中,这样文本区域就占据了更多的空间。谢谢!真的很有帮助再问一个问题:如果我希望框架的大小为350 x 300英寸,那么只显示第一个面板:-(@Angelo您如何设置350x300大小?是的。在main中,我想要“frame.setSize(350300)@Angelo当只显示一个面板时,我无法真正复制大小写。在任何情况下,请为文本组件指定所需的行数和列数。还可以覆盖面板的getPreferredSize()
(添加到框架内容中的内容)返回(350300)。然后pack()
框架。您可能还希望将panel1
放在中心
中,将panel2
放在南部
中,这样文本区域就占据了更多的空间。请尝试使用收边来重置窗口大小,使用收边来重置窗口大小