0
這裏是我的問題完全可驗證的小例子,我相信和希望。 如果具有DefaultMutableTreeNode創建的JTree的直接從初始化()添加方法增加了我正確(線註釋的代碼)。但是如果我嘗試從ActionPerformed方法中操作按鈕,JTree不會出現。添加到JTree的JPanel的一個的actionPerformed
public class Window {
private JFrame frame;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Window window = new Window();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public Window() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
frame.getContentPane().add(menuBar, BorderLayout.NORTH);
JMenu mnAbrir = new JMenu("Open");
menuBar.add(mnAbrir);
JMenuItem mntmAbrirXml = new JMenuItem("Open JTree");
mntmAbrirXml.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DefaultMutableTreeNode mutable = new DefaultMutableTreeNode();
JTree tree = new JTree(mutable);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(tree);
frame.getContentPane().add(panel, BorderLayout.CENTER);
//System.out.println("Is into ActionPerformed");
}
});
mnAbrir.add(mntmAbrirXml);
//JTree treeOut = new JTree(new DefaultMutableTreeNode());
//frame.getContentPane().add(treeOut, BorderLayout.CENTER);
}
}
再次感謝Topo。
考慮提供這說明您的問題 – MadProgrammer
您_could_'重新驗證()'封閉容器和'重繪()'一個可運行的例子,但'樹.setModel(abrirXmlTree())似乎更可取。 – trashgod
添加缺少的代碼 – Topo