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是用于布置窗口的最有用、最简单的类,我会向您推荐它。在整个窗口上放置一个垂直框。然后制作frame_st一个水平框,将其添加到垂直框,并按照您的操作添加按钮。然后添加m1,不管它是什么,也到垂直框,你应该很高兴。

javax.swing.Box 不是解决世界上所有问题的方法,但它应该可以帮助您入门。一旦你的按钮显示出来,你就可以尝试其他的东西。

于 2012-06-22T17:18:00.013 回答