/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
DefaultMutableTreeNode
Fra : Morten Rasmussen


Dato : 20-12-01 15:06

Jeg har et træ bygget op af DefaultMutableTreeNode

ex.:
DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
DefaultMutableTreeNode rootPersOplNode = new
DefaultMutableTreeNode(SkatConsts.sekvensPersonOpl);
DefaultMutableTreeNode rootIndkEjVirkNode = new
DefaultMutableTreeNode(SkatConsts.sekvensIndkomstEjVirk);
DefaultMutableTreeNode rootVirkOplNode = new
DefaultMutableTreeNode(SkatConsts.sekvensVirksomhed);
DefaultMutableTreeNode rootVirkTilRegnskNode = new
DefaultMutableTreeNode(SkatConsts.sekvensVirkTilRegnskab);
DefaultMutableTreeNode rootResultaterNode = new
DefaultMutableTreeNode(SkatConsts.sekvensResultater);
DefaultMutableTreeNode rootTestTabel = new
DefaultMutableTreeNode("Test");

root.removeAllChildren();
root.add(rootPersOplNode);
root.add(rootIndkEjVirkNode);
root.add(rootVirkOplNode);
root.add(rootVirkTilRegnskNode);
root.add(rootResultaterNode);
root.add(rootTestTabel);

Hvordan sætter jer programatisk den valgte (selectede) node!?
Istedetfor:
root.setSelectionRow ( 2 ); /* som virker */
... vil jeg gerne kunne skrive nedenstående - som dog ikke viker: hvordan gør
man dette?
root.setSelectionRow ( rootVirkOplNode );

Mange tak hvis du kan hjælpe ... og god Jul

Mvh. Morten



 
 
Brian Matzon (20-12-2001)
Kommentar
Fra : Brian Matzon


Dato : 20-12-01 15:23

"Morten Rasmussen" <mra@ofir.dk> wrote in message news:3c21f02f$0$89096$edfadb0f@dspool01.news.tele.dk...
> Jeg har et træ bygget op af DefaultMutableTreeNode
>
>DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

<SNIP>
> Hvordan sætter jer programatisk den valgte (selectede) node!?
> Istedetfor:
> root.setSelectionRow ( 2 ); /* som virker */
øøhh javax.swing.tree.DefaultMutableTreeNode har ikke nogen setSelectionRow metode...
???

/Brian Matzon



Morten Rasmussen (20-12-2001)
Kommentar
Fra : Morten Rasmussen


Dato : 20-12-01 15:33

... undskyld - lidt mere kode her:

::

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");

::

JTree rootTree = new JTree(setupRootTreeNodes());

::

private DefaultMutableTreeNode setupRootTreeNodes() {

root.removeAllChildren();

root.add(rootPersOplNode);

root.add(rootIndkEjVirkNode);

root.add(rootVirkOplNode);

root.add(rootVirkTilRegnskNode);

root.add(rootResultaterNode);

root.add(rootTestTabel);

return root;

}

::

void setNoder(int rootNode, int subNode) {

rootTree.setSelectionRow ( rootNode ); //Virker, men vil hellere overføre
navnet (ex. rootIndkEjVirkNode) fremfor et indeks

subRootTree.setSelectionRow( subNode );

};



"Morten Rasmussen" <mra@ofir.dk> wrote in message
news:3c21f02f$0$89096$edfadb0f@dspool01.news.tele.dk...
> Jeg har et træ bygget op af DefaultMutableTreeNode
>
> ex.:
> DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
> DefaultMutableTreeNode rootPersOplNode = new
> DefaultMutableTreeNode(SkatConsts.sekvensPersonOpl);
> DefaultMutableTreeNode rootIndkEjVirkNode = new
> DefaultMutableTreeNode(SkatConsts.sekvensIndkomstEjVirk);
> DefaultMutableTreeNode rootVirkOplNode = new
> DefaultMutableTreeNode(SkatConsts.sekvensVirksomhed);
> DefaultMutableTreeNode rootVirkTilRegnskNode = new
> DefaultMutableTreeNode(SkatConsts.sekvensVirkTilRegnskab);
> DefaultMutableTreeNode rootResultaterNode = new
> DefaultMutableTreeNode(SkatConsts.sekvensResultater);
> DefaultMutableTreeNode rootTestTabel = new
> DefaultMutableTreeNode("Test");
>
> root.removeAllChildren();
> root.add(rootPersOplNode);
> root.add(rootIndkEjVirkNode);
> root.add(rootVirkOplNode);
> root.add(rootVirkTilRegnskNode);
> root.add(rootResultaterNode);
> root.add(rootTestTabel);
>
> Hvordan sætter jer programatisk den valgte (selectede) node!?
> Istedetfor:
> root.setSelectionRow ( 2 ); /* som virker */
> .. vil jeg gerne kunne skrive nedenstående - som dog ikke viker: hvordan
gør
> man dette?
> root.setSelectionRow ( rootVirkOplNode );
>
> Mange tak hvis du kan hjælpe ... og god Jul
>
> Mvh. Morten
>
>



Ulrik Magnusson (20-12-2001)
Kommentar
Fra : Ulrik Magnusson


Dato : 20-12-01 17:19



Morten Rasmussen wrote:

> .. undskyld - lidt mere kode her:
>
> ::
>
> DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
>
> ::
>
> JTree rootTree = new JTree(setupRootTreeNodes());
>
> ::
>
> private DefaultMutableTreeNode setupRootTreeNodes() {
>
> root.removeAllChildren();
>
> root.add(rootPersOplNode);
>
> root.add(rootIndkEjVirkNode);
>
> root.add(rootVirkOplNode);
>
> root.add(rootVirkTilRegnskNode);
>
> root.add(rootResultaterNode);
>
> root.add(rootTestTabel);
>
> return root;
>
> }
>
> ::
>
> void setNoder(int rootNode, int subNode) {
>
> rootTree.setSelectionRow ( rootNode ); //Virker, men vil hellere overføre
> navnet (ex. rootIndkEjVirkNode) fremfor et indeks
>
> subRootTree.setSelectionRow( subNode );
>
> };
>
> "Morten Rasmussen" <mra@ofir.dk> wrote in message
> news:3c21f02f$0$89096$edfadb0f@dspool01.news.tele.dk...
> > Jeg har et træ bygget op af DefaultMutableTreeNode
> >
> > ex.:
> > DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
> > DefaultMutableTreeNode rootPersOplNode = new
> > DefaultMutableTreeNode(SkatConsts.sekvensPersonOpl);
> > DefaultMutableTreeNode rootIndkEjVirkNode = new
> > DefaultMutableTreeNode(SkatConsts.sekvensIndkomstEjVirk);
> > DefaultMutableTreeNode rootVirkOplNode = new
> > DefaultMutableTreeNode(SkatConsts.sekvensVirksomhed);
> > DefaultMutableTreeNode rootVirkTilRegnskNode = new
> > DefaultMutableTreeNode(SkatConsts.sekvensVirkTilRegnskab);
> > DefaultMutableTreeNode rootResultaterNode = new
> > DefaultMutableTreeNode(SkatConsts.sekvensResultater);
> > DefaultMutableTreeNode rootTestTabel = new
> > DefaultMutableTreeNode("Test");
> >
> > root.removeAllChildren();
> > root.add(rootPersOplNode);
> > root.add(rootIndkEjVirkNode);
> > root.add(rootVirkOplNode);
> > root.add(rootVirkTilRegnskNode);
> > root.add(rootResultaterNode);
> > root.add(rootTestTabel);
> >
> > Hvordan sætter jer programatisk den valgte (selectede) node!?
> > Istedetfor:
> > root.setSelectionRow ( 2 ); /* som virker */
> > .. vil jeg gerne kunne skrive nedenstående - som dog ikke viker: hvordan
> gør
> > man dette?
> > root.setSelectionRow ( rootVirkOplNode );
> >
> > Mange tak hvis du kan hjælpe ... og god Jul
> >
> > Mvh. Morten
> >
> >

Du bliver nok nødt til at traversere træet. Nedenstående opbygger
en stak som beskriver stien til knuden. Denne laves til en TreePath
og setSelectionPath() kaldes (ikke testet):


boolean find( TreeNode root, TreeNode selectNode, java.util.Stack
stack )
{
stack.push( root );
if( root == selectNode )
{
return true;
}
for( int i = 0; i < root.getChildCount(); i++ )
{
if( find( root.getChildAt(i), selectNode, stack ) )
{
return true;
}
stack.pop();
}
return false;
}

java.util.Stack stack = new java.util.Stack();
find( root, rootIndkEjVirkNode, stack )
javax.swing.tree.TreePath path = new javax.swing.tree.TreePath(
stack.toArray() );
setSelectionPath( path );

Ulrik Magnusson


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste