2016-09-29 8 views
0

は、私が[最小に縮小]次のコードを得た:挿入子とビューを更新

public class MainWindow extends JFrame { 

    private static String StrBenutzer; 
    private JPanel contentPane; 

    TreeNode TreeNodeRoot = createInitTree(); 
    JTree tree = new JTree(TreeNodeRoot); 


    static DefaultMutableTreeNode NodeRoot; 
    static DefaultMutableTreeNode NodeProjekte; 
    static DefaultMutableTreeNode NodeAllgemein; 



    /** 
    * Launch the application. 
    */ 
    public static void initWindow() { 



     EventQueue.invokeLater(new Runnable() { 
      public void run() { 
       try { 
        MainWindow frame = new MainWindow(); 
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH); 
        frame.setUndecorated(false); 
        frame.setVisible(true); 
        frame.setVisible(true); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 
    } 

    /** 
    * Create the frame. 
    */ 
    public MainWindow() { 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 1160, 679); 


     contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
     setContentPane(contentPane); 
     SpringLayout sl_contentPane = new SpringLayout(); 
     contentPane.setLayout(sl_contentPane); 



     sl_contentPane.putConstraint(SpringLayout.NORTH, tree, 0, SpringLayout.NORTH, contentPane); 
     tree.setEditable(true); 
     contentPane.add(tree); 

     JButton btnAdd = new JButton("Add"); 
     sl_contentPane.putConstraint(SpringLayout.WEST, tree, 0, SpringLayout.WEST, btnAdd); 
     sl_contentPane.putConstraint(SpringLayout.SOUTH, tree, -11, SpringLayout.NORTH, btnAdd); 
     sl_contentPane.putConstraint(SpringLayout.WEST, btnAdd, 0, SpringLayout.WEST, contentPane); 
     sl_contentPane.putConstraint(SpringLayout.SOUTH, btnAdd, -10, SpringLayout.SOUTH, contentPane); 
     contentPane.add(btnAdd); 

     JButton btnDelete = new JButton("Delete"); 
     sl_contentPane.putConstraint(SpringLayout.NORTH, btnDelete, 0, SpringLayout.NORTH, btnAdd); 
     sl_contentPane.putConstraint(SpringLayout.WEST, btnDelete, 6, SpringLayout.EAST, btnAdd); 
     contentPane.add(btnDelete); 

     JButton btnInfo = new JButton("Info"); 
     sl_contentPane.putConstraint(SpringLayout.EAST, tree, 1, SpringLayout.EAST, btnInfo); 
     sl_contentPane.putConstraint(SpringLayout.NORTH, btnInfo, 0, SpringLayout.NORTH, btnAdd); 
     sl_contentPane.putConstraint(SpringLayout.WEST, btnInfo, 6, SpringLayout.EAST, btnDelete); 
     sl_contentPane.putConstraint(SpringLayout.EAST, btnInfo, 59, SpringLayout.EAST, btnDelete); 
     contentPane.add(btnInfo); 

     JPanel panel = new JPanel(); 
     sl_contentPane.putConstraint(SpringLayout.NORTH, panel, 0, SpringLayout.NORTH, tree); 
     sl_contentPane.putConstraint(SpringLayout.WEST, panel, 16, SpringLayout.EAST, tree); 
     sl_contentPane.putConstraint(SpringLayout.SOUTH, panel, 565, SpringLayout.NORTH, contentPane); 
     sl_contentPane.putConstraint(SpringLayout.EAST, panel, 39, SpringLayout.EAST, contentPane); 
     contentPane.add(panel); 
    } 




    private static TreeNode createInitTree(){ 


     NodeRoot = new DefaultMutableTreeNode("User"); 
     NodeProjekte = new DefaultMutableTreeNode("Projekte"); 
     NodeAllgemein = new DefaultMutableTreeNode("Allgemein"); 

     DefaultMutableTreeNode projectA = new DefaultMutableTreeNode("Projekt A"); 
     DefaultMutableTreeNode projectB = new DefaultMutableTreeNode("Projekt B"); 

     DefaultMutableTreeNode LinkProjectA = new DefaultMutableTreeNode("Öffnen"); 
     DefaultMutableTreeNode LinkProjektB = new DefaultMutableTreeNode("Öffnen"); 

     DefaultMutableTreeNode NotizProjektA = new DefaultMutableTreeNode("Notiz"); 
     DefaultMutableTreeNode NoitzProjektB = new DefaultMutableTreeNode("Notiz"); 

     DefaultMutableTreeNode Zeitstrahl = new DefaultMutableTreeNode("Zeitplan"); 
     DefaultMutableTreeNode ToDo = new DefaultMutableTreeNode("ToDo"); 

     NodeProjekte.add(projectA); 
     NodeProjekte.add(projectB); 

     projectA.add(LinkProjectA); 
     projectA.add(NotizProjektA); 

     projectB.add(LinkProjektB); 
     projectB.add(NoitzProjektB); 

     NodeAllgemein.add(Zeitstrahl); 
     NodeAllgemein.add(ToDo); 

     NodeRoot.add(NodeProjekte); 
     NodeRoot.add(NodeAllgemein); 

     return NodeRoot; 
    } 




    private static void addItem(String StrProjektLink, String StrProjektName){ 

     DefaultMutableTreeNode NodeNewProject = new DefaultMutableTreeNode(StrProjektName); 
     DefaultMutableTreeNode NodeNewProjectLink = new DefaultMutableTreeNode("Link"); 
     DefaultMutableTreeNode NodeNewProjectNotiz = new DefaultMutableTreeNode("Notiz"); 

     NodeProjekte.add(NodeNewProject); 
     NodeNewProject.add(NodeNewProjectLink); 
     NodeNewProject.add(NodeNewProjectNotiz); 






    } 


    private static void deleteItem(){ 

    } 

    private static void updateTree(){ 


    } 




    private void addProjectFolder() 
    { 

    addItem("C:/Users/", "User-Directory"a); 

    } 




} 

今、私はツリーからの子を追加または削除した後、JTreeのモデルを更新します。しかし、Eclipseは、すべての変数と関数は静的でなければならないので、要素を更新することはできません。 JTreeを更新する最も簡単な方法は?

+1

「私の変数と関数はすべて静的でなければならない」と言っています - いいえ、Java(EclipseではなくJava)は正確に言っているわけではありません。エラーメッセージをもう一度読み、もう一度修正しようとします。あなたのフィールドとメソッドのほとんどを静的にする代わりに、それらをインスタンスにして(もちろんmainメソッドを除いて)、非静的な方法でそれらにアクセスしようとします。あなたがこの問題を抱えているということは、Javaの基礎知識にギャップがあり、GUIプログラミングに前進しようとする前に、このギャップを埋める必要があることを示唆しています。 –

+1

動作例については、[ツリーの使用方法](http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html)のSwingチュートリアルのセクションを参照してください。 'TreeDemo'の例は、静的な変数やメソッドを必要としないようにコードを構造化する方法を示します。チュートリアルへのリンクをすべてのSwingの基本について手軽に保つ。 – camickr

答えて

0

あなたの質問は、SwingやJTreeとは関係がないように見えますが、静的対インスタンスのフィールドとメソッドの使用や乱用に関係しています。私の考えでは、おそらくinitWindow()メソッドを除いて、すべてのフィールドをプライベートインスタンスフィールドとインスタンスメソッドの上のすべてのメソッドにするのが最善の解決策です。その後、解決策が落ちます。