J'ai pour tâche d'afficher des «yeux» peints avec des boutons de menu pour changer leurs couleurs et la couleur de fond. Ensuite, animez les. Mais actuellement je suis coincé à la peinture, sinc dans mon JFrame j'ai créé JPanel contenant des panneaux avec des yeux et des boutons dessinés. Les boutons sont rendus correctement, mais mes yeux ne sont pas montrés. J'ai essayé de changer la peinture en paintComponent, en définissant contentPane différemment mais toujours rien ne fonctionne.Composant de peinture à l'intérieur d'un autre composant
import java.awt.*;
import javax.swing.*;
public class Main extends JFrame {
public static void main(String[] args) {
final JFrame frame = new JFrame("Eyes");
frame.setPreferredSize(new Dimension(600, 450));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel players = new JPanel(new GridLayout(1, 3));
players.add(new JButton("Eyes color"));
players.add(new JButton("Eye pupil"));
players.add(new JButton("Background color"));
JPanel eyes = new JPanel();
Eyes e = new Eyes();
eyes.add(e);
eyes.setPreferredSize(new Dimension(600, 400));
JPanel content = new JPanel();
content.setLayout(new BoxLayout(content, BoxLayout.Y_AXIS));
frame.setContentPane(content);
content.add(players);
content.add(eyes);
// frame.getContentPane().add(content);
frame.pack();
frame.setVisible(true);
}
}
class Eyes extends JPanel {
public Eyes(){
}
public void paint(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
BasicStroke bs = new BasicStroke(3.0f);
g2d.setBackground(Color.green);
g2d.setStroke(bs);
g2d.setColor(Color.yellow);
g2d.fillOval(50, 150, 200, 200);
g2d.fillOval(350, 150, 200, 200);
g2d.setColor(Color.BLACK);
g2d.drawOval(49, 149, 201, 201);
g2d.drawOval(349, 149, 201, 201);
g2d.fillOval(125, 225, 50, 50);
g2d.fillOval(425, 225, 50, 50);
}
}
C'est ce que je reçois: alt text http://img175.imageshack.us/img175/6420/eyes1.jpg C'est ce que j'ai: alt text http://img132.imageshack.us/img132/827/eyes2i.jpg
Quand je l'ai essayé la peinture directement dans JFrame il fonctionne presque parfait, en dehors de l'arrière-plan ne sont pas mis en . Pourquoi setBackgroundColor n'influence en aucun cas mon dessin?
et savez-vous pourquoi le paramètre d'arrière-plan ne fonctionne pas? –
ok, je l'ai trouvé moi-même dans les docs. –
À partir du document Java: «La définition de la couleur d'arrière-plan dans le contexte Graphics2D n'affecte que les appels clearRect suivants et non la couleur d'arrière-plan du composant.Pour modifier l'arrière-plan du composant, utilisez les méthodes appropriées du composant. –