我需要一个包含一个面板的小程序。面板必须为550x400像素,JTextField必须位于面板动态尺寸之下。我希望它是这样的:
[topPanel]
[textPanel]

但是,我正在尝试此操作,似乎面板正在填充所有空间。代码:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Client extends JApplet
{

@Override
public void init()
{
    try {
        java.awt.EventQueue.invokeAndWait(new Runnable()
            {

            public void run()
            {
                initComponents();
            }
            });
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}

private void initComponents()
{
    JPanel topPanel = new javax.swing.JPanel();

    topPanel.setBackground(Color.red);

    topPanel.setSize(550, 400);
    topPanel.setPreferredSize(new Dimension(550, 400));
    topPanel.setMinimumSize(new Dimension(550, 400));
    topPanel.setMaximumSize(new Dimension(550, 400));

    JTextField myTextBox = new JTextField(255);

    getContentPane().add(topPanel, java.awt.BorderLayout.NORTH);
    getContentPane().add(myTextBox, java.awt.BorderLayout.SOUTH);
}
// TODO overwrite start(), stop() and destroy() methods
}


谢谢!

最佳答案

当我测试以上代码时,组件似乎处于正确的位置。我唯一注意到的是,初始视口尺寸小于550x400。由于JPanel的大小始终为550x400,因此在显示JTextField时会引起一些失真。

10-07 12:24