Hi,
ich habe dieses Problem:
Ich habe eine JComponent die einen Inhaltsbereich haben soll.
Um diese herum zeichne ich in der paintComponent Methode schöne Rahmen und Farbverläufe.
Auf der JComponent habe ich eine weitere JComponent plaziert welche als Inhalt für die Elemente meiner Eingabemasken dienen soll.
Mein Problem:
Die Komponente wird nicht richtig gezeichnet.
Der Inhaltsbereich wird bei Ändeurngen des Fensters nicht angepasst.
wird die komponente nach dem anzeigen erneut gezeichnet so stimmt der Inhalt.
Scheinbar wird nach einem Resize die Komponente gezeichnet bevor die Änderung der größe klar ist.
Habs schon versucht indem ich die Inhaltskomponente im paintComponent setze, hat aber nichts geholfen.
Ich vermute ich habe schlicht einen falschen Ansatz gewählt.
Hier mal etwas Source:
Für Hilfe wie man solche Komponenten schreibt wäre ich sehr dankbar.
ich habe dieses Problem:
Ich habe eine JComponent die einen Inhaltsbereich haben soll.
Um diese herum zeichne ich in der paintComponent Methode schöne Rahmen und Farbverläufe.
Auf der JComponent habe ich eine weitere JComponent plaziert welche als Inhalt für die Elemente meiner Eingabemasken dienen soll.
Mein Problem:
Die Komponente wird nicht richtig gezeichnet.
Der Inhaltsbereich wird bei Ändeurngen des Fensters nicht angepasst.
wird die komponente nach dem anzeigen erneut gezeichnet so stimmt der Inhalt.
Scheinbar wird nach einem Resize die Komponente gezeichnet bevor die Änderung der größe klar ist.
Habs schon versucht indem ich die Inhaltskomponente im paintComponent setze, hat aber nichts geholfen.
Ich vermute ich habe schlicht einen falschen Ansatz gewählt.
Hier mal etwas Source:
Code:
public class BasicBorderedComponent extends JComponent {
private static final long serialVersionUID = 1L;
private String title = null;
private int topSpace = 21;
private int bottomSpace = 21;
public Dimension getMinimumSize() {
try {
int minwidth = contentPane.getLayout().minimumLayoutSize(this).width;
return new Dimension(minwidth, topSpace + bottomSpace + 2 + contentPane.getLayout().minimumLayoutSize(this).height);
} catch (Exception e) {
return (new Dimension(0, 0));
}
}
public Dimension getPreferredSize() {
return getMinimumSize();
}
public BasicBorderedComponent() {
add(contentPane);
addComponentListener(new ComponentListener() {
public void componentResized(ComponentEvent arg0) {
contentPane.setSize(getSize().width - 4, getSize().height - (topSpace + bottomSpace + 2));
contentPane.setLocation(2, topSpace + 2);
}
public void componentMoved(ComponentEvent arg0) {
}
public void componentShown(ComponentEvent arg0) {
}
public void componentHidden(ComponentEvent arg0) {
}
});
contentPane.setLocation(2, topSpace + 2);
}
// Die Komponente auf welcher der Inhalt plaziert wird
private JComponent contentPane = new JComponent() {
private static final long serialVersionUID = 1L;
};
public void paintComponent(Graphics g) {
// Verschiedene Anweisungen zum Zeichnen der Komponente
}
public JComponent getContentPane() {
return contentPane;
}
public void setTitle(String title) {
this.title = title;
repaint();
}
}
Für Hilfe wie man solche Komponenten schreibt wäre ich sehr dankbar.