2010-11-07 6 views
1

Bonne nuit! J'ai testé le code suivant en utilisant Cadre mais quand j'essaye de peindre une ligne autonome sans aucune bordure, bouton et etc., j'ai trouvé que le programme fonctionne sans erreur et ne montre aucune ligne. Il y a code:Une question stupide sur le conteneur, le composant et la fenêtre visible


package helloworld; 

import java.awt.*; 

class Line extends Component { 
    public void paint(Graphics g) { 
     g.drawLine(0, 0, getWidth(), getHeight()); 
    } 
} 

public class Main { 
    public static void main(String[] args) { 
     Container c = new Container(); 
     c.add(new Line()); 
     c.setSize(400, 300); 
     c.setVisible(true); 
    } 
} 

Peut-être que j'ai appris quelque chose de mal, mais si j'utilise cadre f = new Frame() il fonctionne très bien. Alors, qu'est-ce que je fais de mal?

Répondre

3

Par défaut, les cadres ont une disposition (BorderLayout) qui dimensionne les composants que vous y insérez pour remplir le cadre. Les conteneurs n'ont aucune disposition par défaut, donc la ligne n'est pas déplacée ou dimensionnée - elle sera là, à 0,0 et à largeur et hauteur zéro. Donc vous ne le verrez pas.

Voir le didacticiel sur les gestionnaires de disposition au http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html