0

スタックのGUIを作成しています。これが私のコードです

    private void StackActionPerformed(java.awt.event.ActionEvent evt) {                                      

    b1=new JButton("Push");
    b2=new JButton("Pop");
    b3=new JButton("Peek");
    b4=new JButton("Clear");
    b1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            pushButtonActionPerformed(evt);
        }
    });
    tb.add(b1);
    tb.add(b2);
    tb.add(b3);
    tb.add(b4);
    frame_st.add(tb);
    revalidate();
    repaint();
    frame_st.setSize(1022, 534);
    drawstack();

}                                     
public void drawstack()
{
    m1.setBorder(BorderFactory.createRaisedSoftBevelBorder());
    m1.setBackground(Color.white);
    m1.setLayout(null);
    JLabel l1=new JLabel("STACK");
    l1.setBounds(500, 5, 100, 70);
    m1.add(l1); 
}

私のコードは完全にコンパイルされています drawstack() は必要なものを描画していますが、drawstack() が呼び出されると StackActionPerformed(java.awt.event.ActionEvent evt) に存在するボタン、つまり b1、b2 などが非表示になります。そうなってほしくありません。ボタンを常に表示したい。助けてください 。m1 はフレーム全体をカバーするパネルです。

4

1 に答える 1

0

m1ボタン(および)の上に置いていると思いますframe_st。ボタンをm1直接つけます。このようなウィンドウはコンテナ オブジェクトです。それらには (サブ) コンテナーが配置され、(サブ) (サブ) コンテナーが配置されています。特定のレベルのすべてのコンテナーが親にどのように配置されているかを正確に保つ必要があります。それらが隣接するのではなく重なっている場合は、問題があります。

javax.swing.Boxは、ウィンドウをレイアウトするための最も便利で最も単純なクラスであることがわかりました。このクラスをお勧めします。ウィンドウ全体に 1 つの垂直ボックスを配置します。次にframe_st、水平のボックスを作成し、それを垂直のボックスに追加して、同じようにボタンを追加します。m1次に、それが何であれ、垂直ボックスにも を追加すると、準備完了です。

javax.swing.Box は世界中の問題のすべてを解決するわけではありませんが、始めるきっかけにはなるはずです。ボタンが表示されたら、他のことを試すことができます。

于 2012-06-22T17:18:00.013 に答える