J'ai un JPanel
sur lequel un dessin est effectué en utilisant la méthode paintComponent
et après cela quand un utilisateur clique sur le JPanel
une chaîne est dessinée (ou n'importe quel dessin) dessus et comme l'utilisateur se déplace souris sur le JPanel
il montre les coordonnées dans l'info-bulle du JPanel
.le texte de l'info-bulle efface le dessin de l'écran en Java
1) Le problème est que lorsque l'info-bulle survole la chaîne dessinée, elle l'efface mais ce tooltiptext n'a pas d'effet d'effacement sur la partie de dessin que j'ai effectuée dans la méthode paintComponent
. Je ne suis pas capable de comprendre pourquoi cela se passe.
2) Et aussi quand je dessine une chaîne sur clic puis que je minimise et restaure mon application, mes chaînes dessinées ont disparu.
J'espère que vous comprenez ce que je veux dire.
Voici le code:
@Override
public void paintComponent(Graphics graphics) {
super.paintComponent(graphics);
Graphics2D graphics2D = (Graphics2D) graphics;
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
drawBorder(graphics2D);
drawGrid(graphics2D);
}
private void drawBorder(Graphics2D graphics2D) {
graphics2D.setColor(Color.ORANGE);
graphics2D.setStroke(new BasicStroke(borderStroke));
graphics2D.drawRoundRect(panelStartLoc.x, panelStartLoc.y, panelBorder.width,
panelBorder.height, borderRoundness, borderRoundness);
}
private void drawGrid(Graphics2D graphics2D) {
graphics2D.setColor(Color.ORANGE);
graphics2D.setStroke(new BasicStroke(gridCellStroke));
for (int row = gridStartLoc.x; row < panelBorder.getWidth(); row += cellWidth + cellHorGap) {
for (int col = gridStartLoc.y; col < panelBorder.getHeight(); col += cellHeight + cellVerGap) {
graphics2D.drawRoundRect(row, col, cellWidth, cellHeight, cellRoundness, cellRoundness);
}
}
}
public void drawSubjectAtClickLoc(int subjectCode) {
Color color = getBackground();
String drawString = null;
int subjectDrawXLoc = cellClickLoc.x + 4;
int subjectDrawYLoc = (cellClickLoc.y + cellHeight) - 3;
Graphics2D graphics2D = (Graphics2D) getGraphics();
if (subjectCode == SUBJECT_CLEAR) {
graphics2D.setColor(getBackground());
graphics2D.fillRoundRect(cellClickLoc.x + 2, cellClickLoc.y + 2, cellWidth - 4,
cellHeight - 4, cellRoundness, cellRoundness);
return;
}
if (subjectCode == SUBJECT_HUMAN) {
color = Color.WHITE;
drawString = "H";
}
if (subjectCode == SUBJECT_RESOURCE) {
color = Color.GREEN;
drawString = "R";
}
graphics2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
graphics2D.setFont(new Font(null, Font.BOLD, 26));
graphics2D.setColor(color);
graphics2D.drawString(drawString, subjectDrawXLoc, subjectDrawYLoc);
}
.... Merci à l'avance
donc je peux dire que les applications de dessin maintiennent une structure de données des objets dessinés dans la mémoire .. est-ce le cas? –
Oui, c'est vrai. –
merci beaucoup ... –