0

良い一日、

私はアプレット(正確にはJApplet)を作成していて、それを2つのパネルに分割しました。トップパネルはDisplayPanelと呼ばれ、JPanelを拡張するカスタムクラスです。下部のパネルはInputPanelと呼ばれ、JPanelも拡張します。

上記のように、これら2つのパネルをアプレットに追加すると、正常に表示されます。次に実行したいのは、InputPanelに、すべてが実際にリストされているランダムな数のJComponentオブジェクトを保持できるようにすることです。これは、InputPanelでJButton、JLabels、JTextFieldsなどをスローできる必要があることを意味します。次に、 InputPanelにある種のスクロール機能を表示させたいと思います。

問題は、これら2つのパネルがすでにアプレット内にあるため、InputPanelをアプレットに追加したときに指定されたサイズと同じサイズに保つ必要があることです。たとえば、(Webブラウザのhtmlコードからの)アプレットのサイズが700,700で、DisplayPanelが700 x 350で、InputPanelが同じサイズでその下にある場合、追加できるようにします。InputPanelへのボタンのような多くのJComponentsとパネルは、それが存在するのと同じ位置に700 x 350のままであり、必要に応じてパネルだけにスクロールバーがあります。

JScrollPaneのさまざまな組み合わせで遊んだことがありますが、うまくいきません。

ありがとうございました。

4

1 に答える 1

0

良い一日、

さて、自分がやろうとしていることに答えることができたので、今後の参考のために答えを投稿しようと思いました。私の目標は、2つのパネルをJAppletに接続することでした。そうすれば、下部のパネルは必要な数のJComponentを取り込むことができ、アプレットのサイズは変更されませんが、下部のパネルはスクロール可能になります。 JScrollPaneを使用します。

これは、上部のパネルでオブジェクトを選択してから、パネルの下に表示され、選択したオブジェクトを制御できる場合に便利です。私はネットワークシミュレーターを作成しています。トップパネルにネットワーク図があり、たとえばホストを選択して、そのIPアドレスを設定できます。ただし、たとえばファイアウォールを選択した場合は、ブロックするポートを決定できます。

これがお役に立てば幸いです。@AndrewThompsonに感謝します。

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 に答える