Announcement

Collapse
No announcement yet.

combobox internas

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • combobox internas

    hi,

    ich moechte beim betaetigen des schalters einer JComboBox die groesse (insbes. breite) des popup - menues aendern (temporaer, d.h. beim schliessen soll es wieder so breit sein wie das textfeld). zum einen gibt es das problem, dass es keinen eventhandler fuer diese aktion gibt (ich kann nur lediglich "pollen" und abfragen, ob das popup offen ist, finde ich nur etwas uncool) und zum anderen keine methode zum aendern, der groesse ("setBounds()", aendert ja textfeld und schalter gleichzeitig mit). also, wie gesagt, suche ich eine bessere loesung als pollen und setBounds.

    ok, danke im voraus fuer loesungsansaetze!
    thomas

    --
    mailto:[email protected]
    http://www.cs.uni-magdeburg.de/~funke/index.html

  • #2
    Hallo Thomas! <br>
    Im folgenden nicht mehr als ein L&ouml;sungsansatz ;-)
    Du kannst damit zumindest das Pollen in einem eigenen Thread loswerden ...
    <p>
    Es scheint tatsaechlich keinen passenden Listener zu geben. Wenn Du aber einen eigenen ListCellRenderer schreibt, kriegst Du mit, wenn eine Zelle innerhalb des Popups neu gemalt werden soll. Das kann z.B. so aussehen:
    <pre>
    import javax.swing.*;
    public class MyListCellRenderer extends DefaultListCellRenderer {
    public Component getListCellRendererComponent(JList list,
    Object value, int index, boolean isSelected,
    boolean cellHasFocus) {
    System.out.println("Hallo "+index); // (*)
    return super.getListCellRendererComponent(list, value, index,
    isSelected, cellHasFocus);
    }
    }
    </pre>
    Verwendet kann das Ganze dann z.B. so werden:
    <pre>
    String[] vals = { "rot", "gelb", "gruen" };
    JComboBox box = new JComboBox(vals);
    box.setEditable(true);
    box.setRenderer(new MyListCellRenderer());
    </pre>
    Ein Ersetzen der mit (*) markierten Zeile in der Methode, die bei jedem Neuzeichnen einer Zeile im Popup aufgerufen wird, kann Dein Polling ersetzen ... <p>
    Ich hoffe, das hilft Dir ein St&uuml;ckchen weiter. Herzliche Gruesse vom Rhein, <br>Stefa

    Comment


    • #3
      hallo stefan,<br>
      <br>
      <b>danke</b>, du hast mir ein stueck weitergeholfen! so bekomme ich<br>
      jetzt mit, wann die liste geoeffnet ist. waere nicht darauf<br>
      gekommen, dass "getListCellRendererComponent(...)" eine<br>
      aktion ausloest. schoen!<br>
      <br>
      also danke erstmal soweit!<br>
      <br>
      habe schon ueberlegt, die combobox nachzubauen mit eben einem<br>
      textfeld, schalter und einer liste (oder tabelle).<br>
      finde die combobox doch etwas aus dem rahmen gefallen, von<br>
      der manipulation her, bzw. dem komfort. ein spread laesst sich<br>
      da ja leichter handhaben.<br>
      <br>
      gruss von der elbe;o)<br>
      thomas<br>
      <br>
      --<br>
      <i>
      http://www.cs.uni-magdeburg.de/~funke/index.html<br>
      mailto://[email protected]</i&gt

      Comment

      Working...
      X