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を更新する最も簡単な方法は?
「私の変数と関数はすべて静的でなければならない」と言っています - いいえ、Java(EclipseではなくJava)は正確に言っているわけではありません。エラーメッセージをもう一度読み、もう一度修正しようとします。あなたのフィールドとメソッドのほとんどを静的にする代わりに、それらをインスタンスにして(もちろんmainメソッドを除いて)、非静的な方法でそれらにアクセスしようとします。あなたがこの問題を抱えているということは、Javaの基礎知識にギャップがあり、GUIプログラミングに前進しようとする前に、このギャップを埋める必要があることを示唆しています。 –
動作例については、[ツリーの使用方法](http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html)のSwingチュートリアルのセクションを参照してください。 'TreeDemo'の例は、静的な変数やメソッドを必要としないようにコードを構造化する方法を示します。チュートリアルへのリンクをすべてのSwingの基本について手軽に保つ。 – camickr