Я создаю JTree и все его компоненты, а затем в другом классе добавляю его в JPanel. После этого я добавляю JPanel в JFrame; и да, я убедился, что все настроено на видимое, панель добавляется в рамку ДО setVisible() и т. д.JTree не отображается, независимо от того, какой макет я использую
Так почему же моя прокрутка с JTree не появляется?
package TreeExample;
import java.awt.Color;
import javax.swing.JComponent;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
public class Tree extends JComponent
{
JTree tree;
JScrollPane scrollPane;
DefaultMutableTreeNode root = new DefaultMutableTreeNode("RootNode");
public Tree()
{
setVisible(true);
setSize(100, 300);
createChildNodes(root);
tree = new JTree(root);
tree.setVisible(true);
tree.setSize(100, 300);
scrollPane = new JScrollPane(tree);
scrollPane.add(tree);
scrollPane.setVisible(true);
scrollPane.setSize(100, 300);
scrollPane.setViewportView(this);
scrollPane.setBackground(Color.red);
}
private void createChildNodes(DefaultMutableTreeNode rootNode)
{
DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("Child 1");
DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("Child 2");
DefaultMutableTreeNode child3 = new DefaultMutableTreeNode("Child 3");
rootNode.add(child1);
rootNode.add(child2);
rootNode.add(child3);
DefaultMutableTreeNode grandchild1 = new DefaultMutableTreeNode(
"Grandchild 1");
DefaultMutableTreeNode grandchild2 = new DefaultMutableTreeNode(
"Grandchild 2");
child1.add(grandchild1);
child1.add(grandchild2);
}
}
Вот моя панель ...
package TreeExample;
import java.awt.BorderLayout;
import java.awt.TextArea;
import javax.swing.JPanel;
public class Panel extends JPanel
{
Panel()
{
setLayout(new BorderLayout());
add(new Toolbar(), BorderLayout.NORTH);
add(new TextArea(), BorderLayout.CENTER);
add(new Tree(), BorderLayout.WEST);
}
}
А вот мой кадр.
package TreeExample;
import javax.swing.JFrame;
public class Frame extends JFrame
{
Frame()
{
setTitle("ToolBar Example");
add(new Panel());
pack();
setVisible(true);
setSize(500, 500);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args)
{
new Frame();
}
}
Жирный для ** внимание ** пожалуйста. не смелейте каждое слово своего поста. – VGR
Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –
'setSize (100, 300);' Java GUI, возможно, придется работать на нескольких платформах, на разных разрешениях экрана и с использованием разных PLAF. Таким образом, они не способствуют точному размещению компонентов. Чтобы организовать компоненты для надежного графического интерфейса, вместо этого используйте менеджеров компоновки или [их комбинаций] (http://stackoverflow.com/a/5630271/418556), а также макеты и границы для [пробела] (http: //stackoverflow.com/q/17874717/418556). Установка размеров может быть (возможно) причиной этой проблемы. –