J'ai un JButton dans un JPanel qui a des graphiques, mais le bouton ne montrera pas comme il est dans la couche au-dessous des graphiques. J'ai déjà lu ceci: Put JLabel in front of Graphics 2D Rectangle in JPaneljava - Mettre JComponent devant les graphiques dans NullLayoutManager?
Mais les réponses me disent de ne pas utiliser le NullLayoutManager. Y at-il un moyen de le faire avec le NullLayoutManager, parce que je dois positionner spécifiquement mon JButton dans mon JPanel? Si ce n'est pas possible, y at-il d'autres façons de positionner un composant JComponent à une position x, y? J'ai également googlé cela et NullLayoutManager est ce que le World Wide Web me donne.
code:
JPanel p = new JPanel(){
@Override
public void paintComponent(Graphics gr){
Graphics2D g = (Graphics2D) gr;
g.setColor(Color.BLACK);
g.fillRect(0, 0, 800, 800);
g.setFont(titlefont);
g.setColor(Color.WHITE);
g.drawString("dont steal my game idea plz", 25, 100);
g.drawImage(bi, 138, 70, null);
repaint();
}
};
p.setLayout(null);
JButton b = new JButton("PLAY");
b.setLocation(100, 200);
b.setFont(ufont);
f.add(p);
p.add(b);
Chaque fois que je vois 'repeindre()' l'intérieur de paintComponent et l'utilisation de 'mises en null' je suis un peu malade , comme des ongles sur un tableau noir - pourquoi fais-tu ça? Qui vous enseigne et de nombreux autres débutants ces mauvaises habitudes? S'il vous plaît lire les tutoriels pour voir comment le faire correctement. Et lisez les réponses aux questions similaires des experts Swing sur ce site pour voir aussi comment faire les choses correctement. Tout cela a été demandé et répondu de nombreuses fois auparavant. –
* "mais le bouton ne s'affichera pas tel quel dans le calque CI-DESSOUS les graphiques" * - Non, paintComponent est appelé BEFORE "paintChildren" qui peindrait les composants. Le fait que vous brisiez la chaîne de peinture en n'appelant pas 'super.paintComponent'" pourrait "avoir quelque chose à voir avec cela? – MadProgrammer
' Mais les réponses me disent de ne pas utiliser le NullLayoutManager' - alors pourquoi n'essayez-vous pas d'écouter les réponses??? Pourquoi pensez-vous que nous allons changer la réponse juste parce que vous posez la même question à nouveau ??? 'parce que je dois positionner spécifiquement mon JButton dans mon JPanel? '- utilisez donc un gestionnaire de disposition pour positionner le bouton. Au fait, il n'y a aucune raison de peindre du texte non plus. Vous utilisez simplement un JLabel. Ainsi, un gestionnaire de disposition sera facilement capable de gérer à la fois l'étiquette et le bouton. – camickr