java - 无法将 JTree 添加到 JInternalFrame 的 JPanel

标签 java swing jpanel jtree

我的 JInternalframe 中有两个面板。我想将 Jtree 添加到名为 topPanel 的第二个 Jpanel。 但我无法将 Jtree 添加到 topPanel。请帮助我。这是我的代码:

DefaultMutableTreeNode root = new DefaultMutableTreeNode("Deck");

DefaultMutableTreeNode itemClubs = new DefaultMutableTreeNode("Clubs");
addAllCard(itemClubs);
root.add(itemClubs);

DefaultMutableTreeNode itemDiamonds = new DefaultMutableTreeNode("Diamonds");
addAllCard(itemDiamonds);
root.add(itemDiamonds);

DefaultMutableTreeNode itemSpades = new DefaultMutableTreeNode("Spades");
addAllCard(itemSpades);
root.add(itemSpades);

DefaultMutableTreeNode itemHearts = new DefaultMutableTreeNode("Hearts");
addAllCard(itemHearts);
root.add(itemHearts);
DefaultTreeModel treeModel = new DefaultTreeModel(root);
tree = new JTree(treeModel);
scrollPane = new JScrollPane(tree);
// scrollPane.setViewportView(tree);

scrollPane.getViewport().add(tree);

topPanel.add(scrollPane, BorderLayout.CENTER);

topPanel.setVisible(true);  

tree.setVisible(true);

最佳答案

基本上,对我有用,一定有一些东西你没有向我们展示。

考虑提供runnable example这说明了你的问题。这将减少困惑并获得更好的响应

TreeExample

import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

public class TreeTest {

    public static void main(String[] args) {
        new TreeTest();
    }

    public TreeTest() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                    ex.printStackTrace();
                }

                JDesktopPane desktopPane = new JDesktopPane();
                JInternalFrame inFrame = new JInternalFrame("Tree", true, true, true, true);
                inFrame.add(new TestPane());
                inFrame.pack();
                inFrame.setVisible(true);
                desktopPane.add(inFrame);

                JFrame frame = new JFrame("Testing");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(desktopPane);
                frame.setSize(200, 200);
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }

    public class TestPane extends JPanel {

        public TestPane() {
            setLayout(new BorderLayout());

            DefaultMutableTreeNode root = new DefaultMutableTreeNode("Deck");
            DefaultMutableTreeNode itemClubs = new DefaultMutableTreeNode("Clubs");
            root.add(itemClubs);
            DefaultMutableTreeNode itemDiamonds = new DefaultMutableTreeNode("Diamonds");
            root.add(itemDiamonds);
            DefaultMutableTreeNode itemSpades = new DefaultMutableTreeNode("Spades");
            root.add(itemSpades);
            DefaultMutableTreeNode itemHearts = new DefaultMutableTreeNode("Hearts");
            root.add(itemHearts);
            DefaultTreeModel treeModel = new DefaultTreeModel(root);
            JTree tree = new JTree(treeModel);
//            tree.setRootVisible(true);
//            tree.setShowsRootHandles(true);

            JPanel topPanel = new JPanel(new BorderLayout());
            topPanel.add(new JScrollPane(tree));
            add(topPanel);
        }

    }

}

关于java - 无法将 JTree 添加到 JInternalFrame 的 JPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26601623/

相关文章:

java - 在 iPad 上下载根证书时出错

java - 如何在 emacs 中为 Java 类实现 'generate getter/setter'?

java - 多行标题不起作用。

java - JFileChooser:无法选择根目录

java - 在actionperformed监听器中创建jpanel?

java - 我正在尝试使用 JFrame 创建计算器,但遇到一些困难

java - 包含最大元素的列表

在 IE9 中加载/重新加载页面时,Java 小程序在 java7 中失败

java - JFrame 显示一个巨大的白框

java - 将滚动条添加到 JList ,将 JList 添加到 JPanel