Bonjour, Je travaille sur un problème et j'ai des problèmes avec Swing. Je n'ai aucun problème à travailler avec des classes qui étendent JFrame ou JComponent, mais lorsque j'essaie d'utiliser une classe que j'écris qui étend JPanel, elle n'apparaît jamais et rien de ce que j'appelle sur ce panneau n'apparaît, y compris l'ajout de custom JCcomposé à cela. Quelle est la procédure générale pour créer une classe d'extension JPanel et la définir comme volet de contenu à utiliser dans un JFrame?Problèmes d'extension de JPanels
1
A
Répondre
2
Vous devriez être ajouté votre classe qui étend le Jpanel à un conteneur comme JFrame.Une classe qui étend le JPanel ne montre rien puisque c'est un composant non conteneur.
3
I (mon point de vue personnel) ne peut voir rien de mal à s'étend JComponent
comme JComponent
, JPanel
, JLabel
, plus Inheritance versus composition, par exemple
import java.awt.*;
import javax.swing.*;
public class CustomComponent extends JFrame {
private static final long serialVersionUID = 1L;
public CustomComponent() {
setTitle("Custom Component Test");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
add(new CustomComponents());
pack();
setMinimumSize(getSize());// enforces the minimum size of both frame and component
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
CustomComponent main = new CustomComponent();
//main.display();
}
});
}
}
class CustomComponents extends JComponent {
private static final long serialVersionUID = 1L;
@Override
public Dimension getMinimumSize() {
return new Dimension(100, 100);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(400, 300);
}
@Override
public void paintComponent(Graphics g) {
int margin = 10;
Dimension dim = getSize();
super.paintComponent(g);
g.setColor(Color.red);
g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2);
}
}
Questions connexes
- 1. Échange JPanels dans un tableau de JPanels
- 2. Problèmes de changement dynamique de JPanels sur JFrame
- 3. Movan JPanels ou Widget comme JPanels
- 4. Redéfinir jpanels
- 5. Appeler repaint() pour JPanels
- 6. Timing l'affichage de JPanels
- 7. JPanels, auditeurs et fils
- 8. Deux JPanels se chevauchent?
- 9. Peinture sur JPanels
- 10. Java: Comment aligner JPanels
- 11. Image d'arrière-plan Jpanels
- 12. Avoir des JPanels intérieurs
- 13. Superposition de JPanels avec l'image de fond
- 14. Formatage de JButtons à l'intérieur de JPanels
- 15. Deux JPanels dans un JFrame
- 16. Java GUI - JPanels, JFrames, JButtons
- 17. Ajustement GUI JPanels pour s'adapter
- 18. chevauchement JPanels dans l'interface graphique
- 19. Développer/Réduire des jpanels spécifiques
- 20. Ajout de deux JPanels à un JLayeredPane
- 21. Ajout de JPanels supplémentaires à un JPanel
- 22. Ajout de plusieurs jPanels à jFrame
- 23. Exécution de JPanels dans leurs propres threads.
- 24. Débarrassez-vous de l'écart entre JPanels
- 25. Java mémoire Problème de fuite avec JPanels
- 26. Java comment installer deux JPanels sur JFrame
- 27. Sudoku Conseil Utilisation JPanels en Java
- 28. Comment afficher/masquer JPanels dans un JFrame?
- 29. Comment accéder à plusieurs JPanels dans JFrame?
- 30. répondre à des événements dans d'autres JPanels
"Prolonge" implique un est-une relation. Sauf si vous faites un conteneur léger, ne pas étendre 'JPanel'. – Jeffrey
Pour une aide plus ciblée, veuillez fournir un représentant [sscce] (http://sscce.org/). – trashgod