|
| 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
| |
|
|