基于Java的堆栈GUI

基于Java的堆栈GUI,java,swing,user-interface,Java,Swing,User Interface,我正在使用Java制作一个堆栈的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.addActionListen

我正在使用Java制作一个堆栈的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)一切正常。我没有得到任何错误。但是在编译之后,我没有得到想要的结果。工具栏(tb)无法添加按钮(b1、b2等)

如果在呈现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();
}

这里的另一个关键点是您的tb JPanel和JFrame contentPane使用了什么布局管理器?

如何初始化
tb
私有javax.swing.JToolBar tb;这不是初始化,而是声明。通常您不会直接向JToolBar添加按钮。推荐的方法是使用JToolBar.add(Action a)来添加Actions在运行时是否有异常?我还有一个问题。当我的窗口的最大化按钮打开时,我想调整工具栏的大小pressed@rick:您的JFrame的内容窗格可能正在使用BorderLayout,因此您只需将工具栏添加到BorderLayout.NORTH位置(也称为BorderLayout.PAGE_START positino)的内容窗格中即可。