JTree jelölőnégyzeteket

szavazat
12

Azt hozzá kell jelölőnégyzeteket egy JTree. Az egyéni TreeCellRenderer / TreeCellEditor tűnik, mint a helyes megközelítés. Eddig használtam a CheckBoxNodeRenderer megközelítés ezen a weboldalon . Úgy működik, OK, kivéve két dolgot:

  1. ott állhat szóköz felett + jelölőnégyzet alatti; Szeretném megtartani a ugyanaz, mint a rendszeres JTree.
  2. Szeretném megkülönböztetni jelölőnégyzetre kattintva is (amely megpróbálja válthat be a négyzetet), majd kattintson a szövegre kapcsolódó négyzetet (amely lehetővé kell tennie egy esemény hallgató értelmezni ezt, mintha a megfelelő csomópontja és intézkedést megtesznek helyénvaló)

van egy módja annak, hogy ezeket a dolgokat? Körülnéztem JTrees jelölőnégyzeteket, nem találja sok. Jide jól néz ki, de azt kell használni szabad, nyílt forráskódú szoftverek (GPL nincs rendben, LGPL rendben van) ebben az esetben. (Vagy hozzon létre saját négyzetet fa)

A kérdést 03/08/2009 17:06
a forrás felhasználó
Más nyelveken...                            


4 válasz

szavazat
7

Ami a # 2, akkor lehet, hogy egy panel legyen a szerkesztő / renderelő, és adjunk hozzá egy címkét együtt négyzetet - a címke lenne a szöveg, és a négyzetet nem lenne a szöveget hozzá.

Válaszolt 03/08/2009 18:00
a forrás felhasználó

szavazat
4

per @aperkins javaslat ez az, amit végül csinál a TableCellRenderer, úgy tűnik, hogy jól működik:

final private JPanel nodeRenderer = new JPanel();
final private JLabel label = new JLabel();
final private JCheckBox check = new JCheckBox();

     ...

// in constructor:
final Insets inset0=new Insets(0,0,0,0);        
this.check.setMargin(inset0);
this.nodeRenderer.setLayout(new BorderLayout()); 
this.nodeRenderer.add(this.check, BorderLayout.WEST);
this.nodeRenderer.add(this.label, BorderLayout.CENTER);

A kulcsok megszabadulni a nem kívánt helyet a különbözetet úgy tűnik, hogy (a) amely JCheckBox.setMargin (), hogy csökkentse a négyzetet árrés, és (b) egy BorderLayout az JPanel.

Válaszolt 03/08/2009 20:35
a forrás felhasználó

szavazat
9

Tudom, ezt a kérdést már válaszolt már, de én csak azt szeretném, hogy egy tiszta pontot:

1) Jide közös Layer kettős engedéllyel (GPL classpath kivétel, és szabad kereskedelmi licenc). Ez azt jelenti, hogy tudod használni a közös réteg Project nélkül licencelési problémák. Kérjük, ellenőrizze az alábbi linkre, hogy erősítse meg: http://www.jidesoft.com/products/oss.htm . A közös réteg egy végrehajtása ellenőrizhető JTree (com.jidesoft.swing.CheckBoxTree).

2) Van egy blog kelt 2005-től a Mester maga, Santhosh Kumar, ahol bemutatja, hogyan hajtsák végre a JTree jelölőnégyzeteket a követelményeknek, amit említett: http://www.jroller.com/santhosh/entry/jtree_with_checkboxes . Érdemes olvasni, véleményem szerint.

Válaszolt 20/02/2012 13:16
a forrás felhasználó

szavazat
2

Már megjelent egy önálló Swing Checkbox Fa projekt, amely beszerezhető a Maven Central mint org.scijava:swing-checkbox-tree.

A csomag alapját John Zukowski a CheckBox Csomópontfa minta kódot. Ez BSD-2-engedéllyel nem rendelkező függőségek.

Ez lehetővé teszi a keverés és a megfelelő a DefaultMutableTreeNodeés CheckBoxNodeDatacsomópont típusok. Azt is lehetővé teszi négyzetet csomópontokat nem szárcsomóknál.

Arra a kérdésre a kérdés # 1: én nem teszteltem minden platformon, de az én OS X rendszerekre, a CheckBoxNodeDatacsomópontok ugyanúgy magasság pixelben a DefaultMutableTreeNodecsomópontokat.

Arra a kérdésre a kérdés # 2: ez használ egy JCheckBox+ JLabelegy JPanel(a aperkins sugallja), hogy különbséget kattintva egy négyzetet (lehet ellenőrizni / törölje a node), szemben egy címkét (kiválasztásához csomópont).

Példa felhasználások:

Az utóbbi példában is kódot rekurzívan váltogatásra részfák válaszul dobozok ellenőrzött vagy ellenőrizetlen (lásd a treeNodesChangedmódszer).

Válaszolt 12/10/2012 20:49
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more