具有固定大小的JScrollPane中的JTree

问题描述 投票:0回答:1

我在JPanel内的JScrollPane中有一个JTree。

我遇到的问题是width,当我用节点或长名称的节点填充JTree时,该问题并没有解决。

这里举个例子:

enter image description here

如您所见,左一个比右一个更长。

我的目标是使它们的大小完全相等,将主窗口各分割为50%。

这里是用于生成窗口的代码。

是否有办法保持JScrollPane的宽度固定?谢谢。

public void initialize() {

    this.frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    JMenuBar menuBar = new JMenuBar();
    frame.setJMenuBar(menuBar);

    JMenu mnNewMenu = new JMenu("Services");
    mnNewMenu.setHorizontalAlignment(SwingConstants.CENTER);
    menuBar.add(mnNewMenu);

    frame.getContentPane().setLayout(new MigLayout("", "[grow][grow]", "[grow][grow]"));

    JPanel left_JPanel = new JPanel();
    frame.getContentPane().add(left_JPanel, "cell 0 0,grow");
    left_JPanel.setLayout(new MigLayout("", "[grow]", "[grow]"));

    left_ScrollPane = new JScrollPane();
    left_JPanel.add(left_ScrollPane, "cell 0 0,grow");

    JLabel left_Label = new JLabel("Left Scroll Pane");
    left_Label.setFont(new Font("Tahoma", Font.BOLD, 12));
    left_Label.setForeground(Color.BLUE);
    left_Label.setHorizontalAlignment(SwingConstants.CENTER);
    left_ScrollPane.setColumnHeaderView(left_Label);

    JTree left_tree = new JTree();
    left_ScrollPane.setViewportView(left_tree);

    JPanel right_JPanel = new JPanel();
    frame.getContentPane().add(right_JPanel, "cell 1 0,grow");
    right_JPanel.setLayout(new MigLayout("", "[grow]", "[grow]"));

    JScrollPane right_ScrollPane = new JScrollPane();
    right_JPanel.add(right_ScrollPane, "cell 0 0,grow");

    right_JTree = new JTree(phModel);
    right_JTree.setVisibleRowCount(8);
    right_ScrollPane.setViewportView(right_JTree);

    JLabel right_Label = new JLabel("Right Scroll Pane");
    right_Label.setFont(new Font("Tahoma", Font.BOLD, 12));
    right_Label.setForeground(Color.BLUE);
    right_Label.setHorizontalAlignment(SwingConstants.CENTER);
    right_ScrollPane.setColumnHeaderView(right_Label);
}
swing jscrollpane jtree windowbuilder
1个回答
0
投票

我的目标是使它们的大小完全相等,将主窗口各分割为50%。

将嵌套面板与JDK中的标准布局管理器一起使用。

类似:

JPanel left = new JPanel( new BorderLayout() );
left.add(leftLabel, BorderLayout.PAGE_START);
left.add(listScrollPane, BorderLayout.CENTER);

JPanel right = ...

JPanel main = new JPanel( new GridLayout(0, 2) );
main.add( left );
main.add( right );

frame.add( main );
© www.soinside.com 2019 - 2024. All rights reserved.