2013-03-23 2 views
0

나는 단순한 MP3 플레이어를 만들기 시작하고있다. 나는 앞으로, 뒤로, 등의 놀이를 만들고있다 ... 버튼이지만 어떤 이유 때문에 첫 번째 버튼 만 나타나고 두 번째 버튼을 나타나게하고 그 위에 스크롤해야합니다. 너가 그걸 고칠 수 있다면, 좋을거야. 그리고 저는 play.jpg라는 이미지와 next.png라는 이미지 두 개를 사용하고 있습니다.JButton을 스크롤 할 때까지 보이지 않는다.

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 


public class Graphic extends JPanel{ 

JFrame f = new JFrame(); 
JPanel p = new JPanel(new GridBagLayout()); 

public Graphic(){ 

    gui(); 

} 

public void gui(){ 

    f.setVisible(true); 
    f.setSize(1600,900); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.add(p); 

    ppr(75,26,25,25,"pics/play.jpg"); 
    //above is the play button 


    ppr(40,26,25,25,"pics/next.png"); 
// above is the button that wont appear until it is scrolled over (it is just to the  left of the button above 



} 

public void ppr(int x, int y, int width, int height, String file){ 
    p.setLayout(null);  

    Toolkit tool = Toolkit.getDefaultToolkit(); 
     Image player = tool.getImage(file); 
      ImageIcon playbutton = new ImageIcon(player); 

    JButton play = new JButton(playbutton); 
     play.setBounds(x, y, width, height); 
      p.add(play); 

    // ********************** above is the the method that makes a button   


} 


public static void main(String args[]) { 
    new Graphic(); 

} 



    } 
+0

강조 : * 수동으로 크기를 조정하거나 구성 요소를 배치하지 마십시오. 대신 적절한 LayoutManager를 사용하십시오. – kleopatra

답변

1

setBounds을 사용하지 마십시오. 패널을 초기화하는 동안 GridBagLayout 지정한를 사용 GridBagConstraints

+0

좋은 자습서를 알고 있습니까, 나는 찾을 수 없습니다 – user2109242

1

모든 구성 요소가 GUI에 추가 된 후 setVisible(true) 방법은 호출해야 지정합니다.

더 나은 GUI 디자인을위한 다른 제안에도 동의합니다.

+0

동의합니다. 과거의 실험을 통해 귀하의 대답이 올바른 것으로 나타났습니다. 웬일인지 나의 첫번째 성향은 디자인에 대해 해설하는 것이었다. 또한 확실하지 않아 현재 사용중인 컴퓨터에서 테스트 할 수 없지만 EDT를 실행하면 문제가 해결됩니다. – KyleM

+0

@KyleM, 보이는 GUI에 구성 요소를 추가 할 때 패널을 다시 확인()해야합니다. 그렇지 않으면 패널 크기는 (0, 0)이므로 스윙은 페인트 할 것이 없다고 생각합니다. – camickr

+0

아 맞습니다. 다시 수정하십시오. 천천히 나에게 돌아오고있어. 천천히. – KyleM

관련 문제