繁体   English   中英

Java Swing中的堆栈GUI

[英]Stack GUI in java swing

我正在创建堆栈的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是覆盖我整个框架的面板。

我猜你在按钮(和frame_st )的顶部放了m1 我直接将按钮放在m1 像这样的Windows是Container对象。 它们上面放置了(子)容器,上面放置了(sub)(sub)容器,等等。您需要保持特定级别的所有容器在其父对象上的布局方式。 如果它们重叠而不是邻接,那么您有问题。

我发现javax.swing.Box是布置窗口最有用,最简单的类,我向您推荐。 在整个窗口上放一个垂直框。 然后将frame_st为水平Box,将其添加到垂直Box中,然后像执行操作一样添加按钮。 然后将m1 (无论是多少)添加到垂直Box中,您应该会很好。

javax.swing.Box并不是解决世界上所有问题的解决方案,但它应该可以帮助您入门。 按钮显示后,您可以尝试其他方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM