Larrywayn
Mitglied
Hallo zum erstenmal.
Bei dem Zusammenbasteln meines GUI's gab es bisher keine Probleme, bzw. konnte ich alle Fragen durch Google oder durch passives mitlesen lösen.
Doch diese JComboBox scheint etwas ganz spezielles zu sein, so dass guter Rat teuer ist.
2 Probleme beschäftigen mich nun konkret:
1. In Bezug auf dieses Postings: http://www.tutorials.de/forum/1469335-post1.html (Ich wusste nicht ob ich es "pushen" hätte sollen?). Genau diese Frage quält mich schon seit Stunden. Dieser Rahmen, wo kommt er her? Weder in der abgeleiteten ComboBox, dem eigenen ComboBoxModel noch im eigenen ListCellRenderer, konnte ich eine Möglichkeit finden ihn zu deaktivieren. Selbst das testweise Überschreiben, der paint-Methoden, hat kein Erfolg gebracht. Hinweise würden mir schon reichen.
2. Wie schon erwähnte, habe ich eine eigene JComboBox Klasse. In dieser überschreibe ich die paint-Methode, damit ich eine halbtransparente ComboBox bekomme. Außerdem setze ich setOpaque() auf false. Jetzt möchte ich das Dropdownmenü auch anpassen. Deshalb hab ich auch brav einen ListCellRenderer implementiert, welcher JLabel extended. Mit diesem bekomme ich natürlich die einzelnen Listeneinträge und kann ihren Text, ihren Hintergrund und ihre Schriftfarbe setzen, auch transparenter Hintergrund, per Color(xxx, xxx, xxx, 128), funktioniert. Sofern man auf die JComboBox setBackground() aufruft, mit dem Parameter Color(0, 0, 0, 0). Sieht auch alles genauso aus wie gewollt, jedoch kann man es nicht wirklich benutzen. Wenn die Maus über die einzelnen Elemente fährt, ändern sich die Farben. Sie addieren (multiplizieren? Irgendwie so) sich, so dass es immer undurchsichtiger wird, bzw. sich der Hintergrund nicht zurück ändert.
Es sieht aus, als ob ein repaint() irgendwo fehlen würde, bzw. ein fireEvent, welches anzeigt, dass sich etwas geändert hat.
Spontan würde ich die Komponente, welche getListCellRendererComponent() aufruft, dafür verantwortlich machen. Nur ich habe absiolut keine Ahnung mehr. Diese JComboBox mit ihren ganzen Ableitungen und setOpaque() ist mir gerade zu undurchsichtig.
Wäre echt Klasse, wenn ihr mir Tips oder Ideen geben könntet, wie ihr an die Sache rangehen würdet. Wenn einer natürlich weiß, wie es geht, wäre es noch praktischer.
Danke schonmal.
Sascha ^^
Bei dem Zusammenbasteln meines GUI's gab es bisher keine Probleme, bzw. konnte ich alle Fragen durch Google oder durch passives mitlesen lösen.
Doch diese JComboBox scheint etwas ganz spezielles zu sein, so dass guter Rat teuer ist.
2 Probleme beschäftigen mich nun konkret:
1. In Bezug auf dieses Postings: http://www.tutorials.de/forum/1469335-post1.html (Ich wusste nicht ob ich es "pushen" hätte sollen?). Genau diese Frage quält mich schon seit Stunden. Dieser Rahmen, wo kommt er her? Weder in der abgeleiteten ComboBox, dem eigenen ComboBoxModel noch im eigenen ListCellRenderer, konnte ich eine Möglichkeit finden ihn zu deaktivieren. Selbst das testweise Überschreiben, der paint-Methoden, hat kein Erfolg gebracht. Hinweise würden mir schon reichen.
2. Wie schon erwähnte, habe ich eine eigene JComboBox Klasse. In dieser überschreibe ich die paint-Methode, damit ich eine halbtransparente ComboBox bekomme. Außerdem setze ich setOpaque() auf false. Jetzt möchte ich das Dropdownmenü auch anpassen. Deshalb hab ich auch brav einen ListCellRenderer implementiert, welcher JLabel extended. Mit diesem bekomme ich natürlich die einzelnen Listeneinträge und kann ihren Text, ihren Hintergrund und ihre Schriftfarbe setzen, auch transparenter Hintergrund, per Color(xxx, xxx, xxx, 128), funktioniert. Sofern man auf die JComboBox setBackground() aufruft, mit dem Parameter Color(0, 0, 0, 0). Sieht auch alles genauso aus wie gewollt, jedoch kann man es nicht wirklich benutzen. Wenn die Maus über die einzelnen Elemente fährt, ändern sich die Farben. Sie addieren (multiplizieren? Irgendwie so) sich, so dass es immer undurchsichtiger wird, bzw. sich der Hintergrund nicht zurück ändert.
Es sieht aus, als ob ein repaint() irgendwo fehlen würde, bzw. ein fireEvent, welches anzeigt, dass sich etwas geändert hat.
Spontan würde ich die Komponente, welche getListCellRendererComponent() aufruft, dafür verantwortlich machen. Nur ich habe absiolut keine Ahnung mehr. Diese JComboBox mit ihren ganzen Ableitungen und setOpaque() ist mir gerade zu undurchsichtig.
Wäre echt Klasse, wenn ihr mir Tips oder Ideen geben könntet, wie ihr an die Sache rangehen würdet. Wenn einer natürlich weiß, wie es geht, wäre es noch praktischer.
Danke schonmal.
Sascha ^^