gpt4 book ai didi

java - JScrollPane 中具有固定大小的 JTree

转载 作者:行者123 更新时间:2023-12-02 09:12:53 25 4
gpt4 key购买 nike

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

我遇到的问题是宽度,当我用节点或长名称的节点填充 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);
}

最佳答案

My goal is to keep them exactly equal in size, splitting the main window at 50% each.

通过 JDK 中的标准布局管理器使用嵌套面板。

GridLayout 使组件大小相同。

类似于:

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 );

关于java - JScrollPane 中具有固定大小的 JTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com