2012-06-20 5 views
0

나는 스택의 GUI를 만들고있다. 여기에 필요하지만 drawstack()로 (java.awt.event.ActionEvent의의 EVT StackActionPerformed에 존재하는 내 버튼을 호출되는 일을 끌고있다자바 스윙의 스택 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() 컴파일 내 코드입니다) 즉 b1, b2 등은 보이지 않게됩니다. 나는 이것을 원하지 않는다. 내 단추가 항상 표시되도록하고 싶습니다. 도와주세요 . m1은 내 전체 프레임을 덮는 패널입니다.

+3

질문에 답할 수없는 질문입니다. m1은 무엇입니까? 위 코드에서 보여주는 다른 구성 요소와 어떤 관련이 있습니까? –

+0

m1은 내 전체 프레임을 덮는 패널입니다. – rick

+0

@HovercraftFullOfEels "m1"은 – rick

답변

0

버튼 상단에 m1을 넣고있는 것 같습니다 (및 frame_st). 나는 m1에 단추를 직접 끼 웠습니다. 이와 같은 Windows는 컨테이너 객체입니다. 그들은 그 위에 배치 된 (하위) 컨테이너 (하위 컨테이너)와 함께 컨테이너를 배치합니다. 특정 레벨의 모든 컨테이너가 부모에 배치되는 방법을 직설적으로 유지해야합니다. 그들이 닿기보다는 오바 레이면, 당신은 문제가 있습니다.

나는 창문을 배치 할 때 가장 유용하고 단순한 클래스 인 javax.swing.Box을 발견했으며, 나는 그것을 권하고 싶다. 전체 창의 하나의 세로 상자를 넣으십시오. 그런 다음 frame_st을 가로 상자로 만들고 세로 상자에 추가 한 다음 버튼을 추가하십시오. 그런 다음 어떤 것이 든간에 m1을 세로 상자에 추가하면 좋을 것입니다.

javax.swing.Box는 세계의 모든 문제에 대한 해결책은 아니지만 시작해야합니다. 버튼이 표시되면 다른 것들을 시도 할 수 있습니다.