Hallo,
ich habe die JCombobox schon sehr weit überschrieben, sodass ich dort nach Elementen suchen kann (Autocomplete), die Liste aus mehreren Spalten besteht, die Spaltenbreiten anpassbar sind, ein SQL-Statement an die Combobox übergeben werden kann etc... etc..
Zuletzt habe ich die Grösse des Popups vergrössert indem ich die getSize() Methode der Combox überschrieben habe.
Problem:
Wenn das Popup größer als die Combobox selber ist, wird der Dropdown-Pfeil nicht mehr dargestellt, allerdings kann man immernoch an die Stelle klicken, wo dieser eigendlich sein sollte, und es wird das Popup folglich angezeigt. Nur das Symbol fehlt also, die Funktion dahinter ist weiterhin vorhanden.
Wenn ich nun mein Frame auf den gesamten Bildschirm vergrössere, sodass das Popup nicht mehr grösser als die Combobox ist, wird der Pfeil auch wieder dargestellt.
Die Spaltengrösse geben ich an in Char-Count, also Anzahl an Zeichen die pro Spalte angezeigt werden sollen. Hier ist mal die überschriebene getSize() Methode:
-- this.expanded wird in den Methoden aus dem Interface "PopupMenuListener" gesetzt. Bei "becomeVisible" wird zu auf true gesetzt, andernfalls auf false.
Vielen Dank
ich habe die JCombobox schon sehr weit überschrieben, sodass ich dort nach Elementen suchen kann (Autocomplete), die Liste aus mehreren Spalten besteht, die Spaltenbreiten anpassbar sind, ein SQL-Statement an die Combobox übergeben werden kann etc... etc..
Zuletzt habe ich die Grösse des Popups vergrössert indem ich die getSize() Methode der Combox überschrieben habe.
Problem:
Wenn das Popup größer als die Combobox selber ist, wird der Dropdown-Pfeil nicht mehr dargestellt, allerdings kann man immernoch an die Stelle klicken, wo dieser eigendlich sein sollte, und es wird das Popup folglich angezeigt. Nur das Symbol fehlt also, die Funktion dahinter ist weiterhin vorhanden.
Wenn ich nun mein Frame auf den gesamten Bildschirm vergrössere, sodass das Popup nicht mehr grösser als die Combobox ist, wird der Pfeil auch wieder dargestellt.
Die Spaltengrösse geben ich an in Char-Count, also Anzahl an Zeichen die pro Spalte angezeigt werden sollen. Hier ist mal die überschriebene getSize() Methode:
Java:
@Override
public synchronized Dimension getSize ()
{
if (this.colWidth != null)
{
if(this.expanded)
{
int width = 0;
for(int w : this.colWidth)
{
width+=w;
}
char[] tmp = new char[width];
Arrays.fill(tmp, '#');
width = this.getGraphics().getFontMetrics().stringWidth(new String(tmp));
Dimension dim0 = super.getSize();
if (width > dim0.width)
{
return new Dimension(width, dim0.height);
}
return dim0;
}
else
{
this.expanded = true;
return super.getSize();
}
}
this.expanded = true;
return super.getSize();
}
-- this.expanded wird in den Methoden aus dem Interface "PopupMenuListener" gesetzt. Bei "becomeVisible" wird zu auf true gesetzt, andernfalls auf false.
Vielen Dank