0
여기에 내 문제의 완전한 검증 가능한 최소 예가 나와 있습니다. initialize() 메소드에서 직접 추가 한 DefaultMutableTreeNode로 작성된 JTree가 나를 올바르게 추가하는 경우 (라인 주석이있는 코드). 하지만 ActionPerformed 메서드에서 단추를 조작하려고하면 JTree가 나타나지 않습니다.ActionPerformed에서 JPanel에 JTree 추가
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);
}
}
다시 한번 감사드립니다.
당신은'() 재 검증'바깥 쪽 용기와'다시 그리기를()'_could_ 문제 – MadProgrammer
을 보여줍니다 실행 가능한 예제를 제공하는 것을 고려 있지만,이 코드의 라인 (의 actionPerformed 이내)없는 것입니다 .setModel (abrirXmlTree())'가 바람직합니다. – trashgod
누락 된 코드가 추가됨 – Topo