3

Javaを使ってStackの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);
      frame_st.setExtendedState(Frame.MAXIMIZED_BOTH);

  }

ここでは、ツールバー(tb)にボタンを追加しています。すべてが正常に機能しています。エラーは発生していません。しかし、コンパイルした後、望ましい結果が得られません。toolBar(tb)はボタン(b1、b2など)を追加できません

4

1 に答える 1

2

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);
   frame_st.setExtendedState(Frame.MAXIMIZED_BOTH);
   JPanel contentPane = (JPanel)frame.getContentPane();
   contentPane.revalidate();
   contentPane.repaint();
}

また、ここで重要なのは、tbJPanelとJFramecontentPaneが使用しているレイアウトマネージャーです。

于 2012-06-19T18:51:16.673 に答える