在我滚动它之前,JButton是不可见的

时间:2013-03-23 05:15:52

标签: java swing jframe jbutton visible

我刚刚开始制作一个简单的MP3播放器,我正在创建播放,前进,后退等...按钮但由于某种原因只出现第一个按钮并且出现第二个按钮我必须去滚动它。如果你可以帮我解决这个问题,那就太好了。我正在使用两个图像,一个名为play.jpg,另一个名为next.png。

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();

}



  }

3 个答案:

答案 0 :(得分:1)

在不同的线程中运行GUI,而不是主线程。

http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html

所有UI代码都应该在Swing的事件派发线程中运行。

答案 1 :(得分:1)

请勿使用setBounds。使用GridBagLayout  您在初始化面板时指定并指定GridBagConstraints

答案 2 :(得分:1)

在将所有组件添加到GUI之后,应调用setVisible(true)方法。

我也同意其他有关更好的GUI设计的建议。