# paintComponent() überschreiben: Platz für Border freihalten?



## Tobias (31. Jul 2008)

Hi,

wenn ich paintComponent() überschreibe, muss ich mich dann selbst darum kümmern, dass genug Platz für die Border da ist?

mpG
Tobias

[Edit]
P.S.: Es wäre große Klasse, wenn eine Quelle mitgeliefert werden könnte, wo man das nachlesen kann. Ich hab nämlich nichts gefunden ...


----------



## SlaterB (31. Jul 2008)

eine Quelle kann ich nicht nennen, aber auf das Ausprobieren mit und ohne Border hinweisen, welches eindeutige Ergebnisse liefert,
so eindeutig, dass ich sie gar nicht hier schreibe


----------



## Tobias (31. Jul 2008)

Ja, ich hab's ausprobiert. Ich muss wohl Platz freihalten - aber gefunden hab ich dazu überhaupt nix schriftliches ... Das ist doch Murks.

mpG
Tobias


----------



## SlaterB (31. Jul 2008)

hier steht was:
http://www.iut-info.univ-lille1.fr/docs/tutorial/uiswing/painting/overview.html
hinter dem vielversprechenden Satz


> One thing this component does not do is take borders into account. Not only does it not use a border, but it also doesn't adjust its painting coordinates to take a border into account. A production-quality component would adjust to borders as described in the next subsection.


----------



## Wildcard (31. Jul 2008)

Quelle: http://java.sun.com/javase/6/docs/api/javax/swing/JComponent.html#paint(java.awt.Graphics)
Zitat:


> Generally speaking, the component and its children should not paint in the insets area allocated to the border.


----------



## Tobias (31. Jul 2008)

Danke. Jetzt komme ich mir zwar wie ein Trottel vor (ich habe wirklich gesucht. Aber eben nur in den Docs zu painting allgemein und bei paintComponent), aber Danke.

mpG
Tobias


----------



## André Uhres (31. Jul 2008)

_Eine andere Frage, die eine Anmerkung wert ist, ist wie sich *Opazität *auf die Randeigenschaft einer Swingkomponente bezieht. Der Bereich, der durch ein Randobjekt auf einer Komponente dargestellt wird, wird noch als *ein Teil der Geometrie dieser Komponente* betrachtet. Das heißt, daß, wenn eine Komponente "opaque" ist, sie immer noch für das Füllen des Bereichs verantwortlich ist, der durch den Rand besetzt wird. (der Rand überlagert dann einfach seine Darstellung über die undurchlässige Komponente).

Wenn eine dahinter liegende Komponente durch den Randbereich einer Komponente durchscheinen soll -- das heißt, wenn der Rand Transparenz unterstützt indem isBorderOpaque() "false" zurückgibt (z.B. EmptyBorder oder LineBorder mit roundedCorners) -- dann, muß die Komponente sich selbst auch als nicht opaque definieren und sicherstellen dass sie den Randbereich nicht übermalt. _ (Malen in AWT und Swing: Die Opazität)


----------

