Я установил свой фрейм с JTree слева и JTable справа, и использовал BorderLayout для достижения этой цели.Однако, как только я помещаю какие-либо данные в мой JTable, он расширяется, чтобы охватить почти весь кадр, и мой JTree с ним.В настоящее время в таблице вообще нет данных (я проверяю свой SelectionListener), только пара заголовков столбцов, которые в общей сложности имеют пятнадцать символов.Там нет никакого способа, ему нужно дополнительное пространство.
Вот мой установочный код:
primaryframe = new javax.swing.JFrame();
primaryframe.setTitle("Bus Route Finder");
primaryframe.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
primaryframe.setSize(500, 500);
primaryframe.setLayout(
new java.awt.BorderLayout()
);
// Set up the tree and it's dependent objects(model, scrollpane, etc).
javax.swing.tree.DefaultMutableTreeNode node = new javax.swing.tree.DefaultMutableTreeNode(dataroot.GetName());
node.setUserObject(dataroot);
CreateNodes(dataroot, node);
primaryframe.add(
treescrollpane = new javax.swing.JScrollPane(
datatree = new javax.swing.JTree(
treemodel = new javax.swing.tree.DefaultTreeModel(
node
)
)
),
java.awt.BorderLayout.WEST
);
datatree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
public void valueChanged(javax.swing.event.TreeSelectionEvent e) {
javax.swing.JTree tree = (javax.swing.JTree)e.getSource();
javax.swing.tree.DefaultMutableTreeNode newnode = (javax.swing.tree.DefaultMutableTreeNode)tree.getSelectionPath().getLastPathComponent();
Controller.TreeData data = (Controller.TreeData)newnode.getUserObject();
tablemodel.setNumRows(0);
tablemodel.setColumnCount(0);
for(int i = 0; i < data.GetNumberOfFields(); i++) {
tablemodel.addColumn(data.GetFieldName(i));
}
}
});
primaryframe.add(
tablescrollpane = new javax.swing.JScrollPane(
datatable = new JTable(
tablemodel = new javax.swing.table.DefaultTableModel()
)
),
java.awt.BorderLayout.EAST
);