我正在创建一个堆栈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是一个覆盖我整个画面的面板。
答案 0 :(得分:0)
我猜你正在把m1
放在你的按钮上(和frame_st
)。我将按钮直接放在m1
上。像这样的Windows是Container对象。他们放置(子)容器,放置(子)(子)容器等等。你需要保持特定级别的所有容器如何布置在其父级上。如果它们叠加而不是邻接,则表示存在问题。
我发现javax.swing.Box是最实用,最简单的布局窗口类,我建议你这样做。在整个窗口放一个垂直盒子。然后将frame_st
设为水平Box,将其添加到垂直Box,然后按照您的操作添加按钮。然后将m1
添加到垂直框中,不管它是什么,你都应该好好去。
javax.swing.Box不是解决所有世界问题的方法,但它应该让你开始。一旦你的按钮显示,你可以尝试其他的东西。