2014-05-18 4 views
1

내 드로잉 클래스 : 예를 들어, 난 그냥 단순한 선을 그어야 할JFrame에 버튼이있는 그림을 하나 추가하는 방법은 무엇입니까?

public class DrawNot1 extends JPanel { 

private BasicStroke BS = new BasicStroke(2); 
private int x; 
private int y; 

public DrawNot1(int x, int y){ 
    setSize(100, 100); 
    this.x = x; 
    this.y = y; 
} 

@Override 
protected void paintComponent(Graphics g){    
    super.paintComponent(g); 
    doDrawing(g); 
} 

private void doDrawing(Graphics g){ 
    Graphics2D g2d = (Graphics2D) g; 
    g2d.setStroke(BS); 

    g2d.drawLine(x, y, x, y+10); 

} 

내 JFrame의 클래스 :

public class Main extends JFrame{ 

private int x; 
private int y; 

public Main() { 
    initUI(); 
} 

public void initUI() { 
    setSize(600, 500); 
    setTitle("Points"); 
    setLocationRelativeTo(null); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    add(new DrawNot1(20, 20)); 
    add(new JButton("button1")); 
} 

public static void main(String[] args) { 

    SwingUtilities.invokeLater(new Runnable() { 
     @Override 
     public void run() { 
      Main ex = new Main(); 
      ex.setVisible(true); 
     } 
    }); 
} 

}

내가 버튼 옆에 내 그림을 표시 할

하지만, 표시되는 유일한 구성 요소가 단추로 표시되지 않는 경우, 내 그림은 그렇지 않습니다.

내 궁극적 인 목표는 버튼을 누르면 내 그림이 버튼 근처에 나타납니다.

답변

2

JFrame은 기본값으로 BorderLayout을 사용하며 두 구성 요소를 기본 (CENTRE) 위치에 추가하면 추가 된 마지막 구성 요소 만 표시됩니다. SOUTH 위치에 버튼을 추가

시도 대신

add(new JButton("button1"), BorderLayout.SOUTH); 

는 또한이 DrawDot1getPreferredSize 메서드를 재정의하고 또한 내가 생각하지

+0

더 나은 결과가 유도 적절한 값을 제공 찾을 수 있습니다 기본 테두리 레이아웃, 감사합니다 –

+0

@AltianoGerung 예, 일반적인 잡았다;) – MadProgrammer

관련 문제