为什么我的panelmisajour无法显示?初学java GUI,大家有没有好的方法去调试,感觉gui编程没法调试,或者好的学习方法,谢谢指点
我的frame:
public class FrameDVDIUT extends JFrame{ private static final long serialVersionUID = 1L;
private Toolkit tk=Toolkit.getDefaultToolkit();
//l'objet Toolkit contenant les attributs de l'environement du système local
private Dimension d=tk.getScreenSize();
//l'objet Dimension  contenant les tailles de l'écran
private PanelMenueBoutton menu;
private ControleurMenu cm;
private PanelMisAJour misajour;

public FrameDVDIUT() {
//les opérations pour le frame
setTitle("DVDIUT réalisé par LI Ruochen&David Silvera&Yohan Dumas-Pilhou");
setSize(d.width*3/4,d.height*3/4);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
centerWindow(this);
setResizable(false);
setVisible(true);
FlowLayout flowlayout=new FlowLayout(FlowLayout.LEFT);
setLayout(flowlayout);


                   //在frame中添加panel的程序
//les opérations pour le panel mis a jour
misajour=new PanelMisAJour();
misajour.setPreferredSize(new Dimension(this.getWidth()*3/4,this.getHeight()));
misajour.setVisible(true);
misajour.setBackground(Color.red);
add(misajour);

}
我的panelmisajour
public class PanelMisAJour extends JPanel{
private ModeleDVDIut modele;

private JPanel panel1;
private JLabel labeltitre;
private JTextField titre;
private JLabel labelgenre;
private JComboBox genre;

public PanelMisAJour(){
try {
modele=new ModeleDVDIut();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
setLayout(new GridLayout(10,1));

panel1=new JPanel();
labeltitre=new JLabel("Titre");
labeltitre.setSize(this.getWidth()/8,this.getHeight()/10);
panel1.add(labeltitre);
titre=new JTextField("");
titre.setSize(this.getWidth()/4,this.getHeight()/10);
panel1.add(titre);
labelgenre=new JLabel("Genre");
labelgenre.setSize(this.getWidth()/8,this.getHeight()/10);
panel1.add(labelgenre);
genre=new JComboBox();
genre.setSize(this.getWidth()/4,this.getHeight()/10);
ajoutegenre();
panel1.add(genre);
panel1.setVisible(true);
add(panel1);
}
谢谢各位指点迷经

解决方案 »

  1.   

    把frame当中的东西都加进去,再setvisible。这是一般规律。试试看。
    何谓没法调试?哪个组件出不来效果就要查看这个组件的用法有没有差错,祝你好运
      

  2.   

    panel1.setVisible(true); 
    add(panel1); 调一下顺序。
      

  3.   

    我把setvisible加到最后也没显示啊,并且,我那个panel加到别的frame中就能显示啊
      

  4.   

    感觉没错啊,不过感觉你的好多方法都很。比如centerWindow(this); 
      

  5.   

    我也感觉没错啊
    我的方法很怎么?欢迎批评,刚刚学,所以方法很笨。centerwindow(this)是自己编的一个过程为了是窗口在屏幕中央显示
      

  6.   

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;class FrameDVDIUT extends JFrame{private static final long serialVersionUID = 1L;
    private Toolkit tk=Toolkit.getDefaultToolkit();
    //l'objet Toolkit contenant les attributs de l'environement du système local
    private Dimension d=tk.getScreenSize();
    //l'objet Dimension  contenant les tailles de l'écran
    //private PanelMenueBoutton menu;
    //private ControleurMenu cm;
    private PanelMisAJour misajour;public FrameDVDIUT() {
    //les opérations pour le frame
    setTitle("DVDIUT réalisé par LI Ruochen&David Silvera&Yohan Dumas-Pilhou");
    setSize(d.width*3/4,d.height*3/4);
    setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    //centerWindow(this);
    setResizable(false);
    JPanel pane = (JPanel)getContentPane();
    //FlowLayout flowlayout=new FlowLayout(FlowLayout.LEFT);
    BorderLayout flowlayout=new BorderLayout();
    pane.setLayout(flowlayout);misajour=new PanelMisAJour();
    misajour.setVisible(true);
    misajour.setBackground(Color.red);
    pane.add(misajour,BorderLayout.CENTER);
    setVisible(true);
    misajour.setPreferredSize(new Dimension(this.getWidth()*3/4,this.getHeight()));
    }public static void main(String[] args){
    new FrameDVDIUT();
    }}class PanelMisAJour extends JPanel implements ComponentListener{
    //private ModeleDVDIut modele;private JPanel panel1;
    private JLabel labeltitre;
    private JTextField titre;
    private JLabel labelgenre;
    private JComboBox genre;public PanelMisAJour(){
    setLayout(new GridLayout(10,1));panel1=new JPanel();
    labeltitre=new JLabel("Titre");
    //labeltitre.setSize(this.getWidth()/8,this.getHeight()/10);
    panel1.add(labeltitre);
    titre=new JTextField("");
    //titre.setSize(this.getWidth()/4,this.getHeight()/10);
    panel1.add(titre);
    labelgenre=new JLabel("Genre");
    //labelgenre.setSize(this.getWidth()/8,this.getHeight()/10);
    panel1.add(labelgenre);
    genre=new JComboBox();
    //genre.setSize(this.getWidth()/4,this.getHeight()/10);
    //ajoutegenre();
    panel1.add(genre);
    //panel1.setVisible(true);
    add(panel1);
    this.addComponentListener(this);
    }public void componentResized(ComponentEvent e){
       System.out.println("componentResized()");
       //System.out.println(this.getWidth()+","+this.getHeight());
       labeltitre.setSize(this.getWidth()/8,this.getHeight()/10);
       titre.setSize(this.getWidth()/4,this.getHeight()/10);
       labelgenre.setSize(this.getWidth()/8,this.getHeight()/10);
       genre.setSize(this.getWidth()/4,this.getHeight()/10);
    } public void componentHidden(ComponentEvent e){}
     public void componentMoved(ComponentEvent e){}
     public void componentShown(ComponentEvent e){}
    }