Ich habe ein JPanel, die benutzerdefinierten einen Hintergrund zeichnen implementiert zeichnen. Darüber hinaus kann die Anwendung JButtons platzieren, um Klicks auf bestimmte Bereiche des JPanels zu erkennen. Wenn Sie jedoch die (nicht deckenden) Schaltflächen mit der Maus markieren, werden die zugrunde liegenden JPanel-Grafiken allesamt glitschig.Graphics Glitches mit JPanel des benutzerdefinierten Zeichnen mit JButtons
Diese sind JPanels 9 mit der benutzerdefinierten Zeichnung, jeweils mit 2 Füllung JButtons (R und L). Der obere rechte Block und diejenigen, die so aussehen, sind "frisch". Unten rechts hat beide Tasten hervorgehoben, die mittlere nur die ‚R‘ usw.
Ich schaffe meine Knöpfe wie folgt aus:
rotatePanel = new JPanel();
rotatePanel.setOpaque(false);
GridLayout rotateLayout = new GridLayout(1, 2);
rotatePanel.setLayout(rotateLayout);
rotateRight = new JButton("R");
rotateRight.addActionListener(this);
rotateRight.setOpaque(false);
rotateRight.setContentAreaFilled(false);
rotateRight.setBorderPainted(false);
rotatePanel.add(rotateRight);
rotateLeft = new JButton("L");
rotateLeft.addActionListener(this);
rotateLeft.setOpaque(false);
rotateLeft.setContentAreaFilled(false);
rotateLeft.setBorderPainted(false);
rotatePanel.add(rotateLeft);
und dies ist meine Zeichnung Code:
public void paintComponent(Graphics g) {
super.paintComponent(g);
Rectangle clipRect = g.getClipBounds();
clipRect.grow(-4, -4);
int thirdWidth = clipRect.width/3;
int thirdHeight = clipRect.height/3;
for (int x = 0; x < Board.DIM; x++) {
//Draw the columns
for (int y = 0; y < Board.DIM; y++) {
//Draw the rows
g.drawRect(thirdWidth * x, thirdHeight * y, thirdWidth, thirdHeight);
}
}
g.setColor(Color.BLACK);
g.drawRect(0, 0, clipRect.width, clipRect.height);
}
Ah, natürlich. Jetzt habe ich auch etwas Neues über Java-Malen gelernt;) Danke! –
+1 Ich wusste nicht, was g.getClipBounds() tat. – david