gpt4 book ai didi

java - 我需要在添加新组件时动态调整 JPanel 的大小

转载 作者:行者123 更新时间:2023-11-30 04:15:35 25 4
gpt4 key购买 nike

我需要让用户向我的 JFrame 添加更多文本字段,因此一旦框架的大小超过其原始值,滚动 Pane 就会介入。由于我无法将 JScrollPane 添加到 JFrame 以启用滚动,所以我决定将JFrame 上的 JPanel 并将 JPanel 对象传递到 JScrollPane 构造函数中。滚动现在可以正常工作,但只能滚动到 JPanel 的边界。问题是 JPanel 的大小保持不变,并且不会动态拉伸(stretch)。发生的情况是,我的代码中的按钮耗尽了 JPanel 大小为 300x300 的所有空间,但我想要做的是在这些控件用完其原始空间后让 JPanel 拉伸(stretch)。请指教。

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Rectangle;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;


public class Skrol {
public static void main(String[] args) {


JFrame f = new JFrame();
f.setLayout(new FlowLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel();


p.setPreferredSize(new Dimension(400,400));



JScrollPane jsp = new JScrollPane(p);

jsp.setPreferredSize(new Dimension(300,300));
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

for(int i=0;i<100;i++)
{
JButton b = new JButton("Button "+i);
p.add(b);
}
f.add(jsp);
f.setSize(new Dimension(600,600));
f.setLocation(300, 300);
f.setVisible(true);

}
}

最佳答案

我将 JPanel 中的布局更改为 GridLayout ,因此它的大小仅由布局管理器根据面板上的组件来处理。

    JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel p = new JPanel(new GridLayout(0, 5));
JScrollPane jsp = new JScrollPane(p);

jsp.setPreferredSize(new Dimension(300,300));
jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);

for (int i = 0; i < 100; i++) {
JButton b = new JButton("Button " + i);
p.add(b);
}

f.add(jsp, BorderLayout.CENTER);
f.setLocation(300, 300);
f.setVisible(true);
f.pack();

关于java - 我需要在添加新组件时动态调整 JPanel 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491408/

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