在Java swing中堆栈GUI

时间:2012-06-20 14:40:08

标签: java swing user-interface 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);
    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是一个覆盖我整个画面的面板。

1 个答案:

答案 0 :(得分:0)

我猜你正在把m1放在你的按钮上(和frame_st)。我将按钮直接放在m1上。像这样的Windows是Container对象。他们放置(子)容器,放置(子)(子)容器等等。你需要保持特定级别的所有容器如何布置在其父级上。如果它们叠加而不是邻接,则表示存在问题。

我发现javax.swing.Box是最实用,最简单的布局窗口类,我建议你这样做。在整个窗口放一个垂直盒子。然后将frame_st设为水平Box,将其添加到垂直Box,然后按照您的操作添加按钮。然后将m1添加到垂直框中,不管它是什么,你都应该好好去。

javax.swing.Box不是解决所有世界问题的方法,但它应该让你开始。一旦你的按钮显示,你可以尝试其他的东西。