Applet面板,一个固定大小和动态JTextField

时间:2010-05-24 20:46:44

标签: java jpanel applet

我需要一个包含一个面板的applet。面板需要为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
}

谢谢!

2 个答案:

答案 0 :(得分:1)

当我测试上面的代码时,组件似乎处于正确的位置。我唯一注意到的是初始视口大小小于550x400。这导致显示JTextField时出现一些瑕疵,因为JPanel的大小总是550x400。

答案 1 :(得分:0)

JPanel似乎是正确的(使用setPreferredSize,添加到NORTH)假设您的applet是550宽且至少400高。我可能会尝试将文本字段移动到CENTER而不是SOUTH,因为BorderLayout如何拉伸其组件。根据Javadocs:

  

组件根据其首选尺寸和容器尺寸的限制进行布局。 NORTH和SOUTH组件可以水平拉伸; EAST和WEST组件可以垂直拉伸; CENTER组件可以水平和垂直拉伸,以填充剩余的空间。

因此,将文本字段放入中心应该为其提供垂直拉伸,使其能够占用applet可用空间的其余部分。