我需要一个包含一个面板的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
}
谢谢!
答案 0 :(得分:1)
当我测试上面的代码时,组件似乎处于正确的位置。我唯一注意到的是初始视口大小小于550x400。这导致显示JTextField时出现一些瑕疵,因为JPanel的大小总是550x400。
答案 1 :(得分:0)
JPanel似乎是正确的(使用setPreferredSize,添加到NORTH)假设您的applet是550宽且至少400高。我可能会尝试将文本字段移动到CENTER而不是SOUTH,因为BorderLayout如何拉伸其组件。根据Javadocs:
组件根据其首选尺寸和容器尺寸的限制进行布局。 NORTH和SOUTH组件可以水平拉伸; EAST和WEST组件可以垂直拉伸; CENTER组件可以水平和垂直拉伸,以填充剩余的空间。
因此,将文本字段放入中心应该为其提供垂直拉伸,使其能够占用applet可用空间的其余部分。