0

再会,

我正在构建一个小程序(确切地说是 JApplet),我将它分成两个面板。顶部面板称为 DisplayPanel,它是扩展 JPanel 的自定义类。底部面板称为 InputPanel,它也扩展了 JPanel。

如上所述,我可以将这两个面板添加到小程序中,它们可以正常显示。我想做的下一件事是让InputPanel能够保存随机数量的 JComponent 对象,所有这些对象都是垂直列出的。这意味着InputPanel应该能够向其抛出 JButton、JLabels、JTextField 等。然后我希望InputPanel显示某种滚动功能。

问题是,由于这两个面板已经在我的小程序中,我需要InputPanel保持与添加到小程序时相同的大小。因此,例如,如果我的小程序(来自网络浏览器 html 代码)的大小为 700,700,然后DisplayPanel为 700 x 350,并且InputPanel在其下方具有相同的尺寸,我希望能够添加很多 JComponents 像按钮,到InputPanel和面板将保持 700 x 350 的位置在它所在的相同位置,如果需要,只有面板会有滚动条。

我玩过许多不同的 JScrollPane 组合,但就是无法获得它。

谢谢你。

4

1 回答 1

0

再会,

好的,我能够回答我想要做的事情,所以我想我会发布一个答案以供将来参考。请记住,我的目标是将两个面板附加到 JApplet 上,然后底部面板应该能够容纳尽可能多的 JComponents 并且 Applet 的大小不会改变,但底部面板将可以滚动与 JScrollPane。

如果您在顶部面板中选择了一个对象,然后在下方显示一个面板,您可以控制您选择的对象,这将非常有用。我正在制作一个网络模拟器,在顶部面板中,您有一个网络图,您可以选择一个主机,例如,然后设置其 IP 地址。但是,如果您选择防火墙,例如,您可以确定要阻止哪些端口。

我希望这会有所帮助并感谢@Andrew Thompson。

import java.awt.Dimension;

import javax.swing.BoxLayout;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;


public class Applet extends JApplet
{
    JPanel p1;
    JPanel p2;
    JPanel p3;

    JScrollPane s1;



    public Applet()
    {
        p1 = new JPanel();
        p2 = new JPanel();
        p3 = new JPanel();

        s1 = new JScrollPane(p3,s1.VERTICAL_SCROLLBAR_ALWAYS,s1.HORIZONTAL_SCROLLBAR_ALWAYS);


    }

    @Override
    public void init()
    {
        super.init();
        for(int i=0;i<100;i++)
        {
            p3.add(new JButton("Hello"));
            p3.add(new JLabel("blah"));
            p3.add(new JButton("Sup"));
        }

        p1.setPreferredSize(new Dimension(this.getWidth(), this.getHeight()));
        p2.setPreferredSize(new Dimension(this.getWidth(),(int) (this.getHeight()*0.6667)));

        p3.setLayout(new BoxLayout(p3,BoxLayout.PAGE_AXIS));
        s1.setPreferredSize(new Dimension(this.getWidth(),(int)(this.getHeight()*0.33333)));

        p1.add(p2);
        p1.add(s1);

        this.add(p1);
    }

}
于 2012-04-08T13:06:20.263 回答