2012-06-20 128 views
0

我正在創建堆棧的GUI。這裏是我的代碼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); 
} 

我的代碼prefectly drawstack()編制正在制定這是必需的,但作爲drawstack()被調用我的按鈕是存在於StackActionPerformed(EVT java.awt.event.ActionEvent中的事情)即b1,b2等變得不可見。我不希望發生這種情況。我希望我的按鈕始終可見。請幫忙 。 m1是一個覆蓋我整個框架的面板。

+3

按照您的問題,您的問題無法回答。什麼是m1?它與您在上面的代碼中顯示的其他組件有什麼關係? –

+0

m1是一個覆蓋我的整個幀的面板 – rick

+0

@HovercraftFullOfEels我已經提到了什麼「m1」是 – rick

回答

0

我猜你正在把m1放在你的按鈕上(和frame_st)。我會直接在m1上放置按鈕。這樣的窗口是Container對象。他們有(子)容器放在它們上面,(子)(子)容器放在它們上面等等。你需要保持直接如何將特定級別的所有容器放在父級上。如果他們覆蓋而不是毗鄰,你有一個問題。

我發現javax.swing.Box是最有用,最簡單的窗戶佈置類,我推薦給你。把一個垂直的盒子放在你的整個窗戶上。然後將frame_st設置爲水平方塊,將其添加到垂直方向,然後按照您的操作添加按鈕。然後將m1,不管它是什麼,加到垂直框中,你應該很好。

javax.swing.Box不是所有世界問題的解決方案,但它應該讓你開始。一旦你的按鈕顯示,你可以嘗試其他的東西。