gpt4 book ai didi

java - 在动态 JPanel 中添加 JScrollPane

转载 作者:行者123 更新时间:2023-12-02 06:06:13 26 4
gpt4 key购买 nike

我试图用 JScrollPane 包围 JPanel 但它就是不显示,为什么呢? 我的 JPanel 由动态创建的组件组成。每当用户单击按钮时,就会创建一个新组件,从而使 JPanel 更大(通过设置 PreferedSize)。但 JScrollPane 不会显示。请帮忙。谢谢。

scrpOfPanel = new JScrollPane();
scrpOfPanel .setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrpOfPanel .setBounds(54, 180, 565, 400);
panel.add(scrpOfPanel);

panel = new JPanel();

panel.setBackground(Color.WHITE);
panel.setPreferredSize(new Dimension (450, 50));
panel.setLayout(null);

scrpOfPanel .setViewportView(panel);
lblAdd = new JLabel();
lblAdd.setBounds(420, 6, 38, 25);
lblAdd.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
count++;
txtItem= new JTextField();
txtItemNumber = new JTextField();
lblRemove = new JLabel();
l
panel.add(txtItem);
panel.add(txtItemNumber);
panel.add(lblRemove);
if(count>0){
x+=30;
y+=30;
lblRemove.setBounds(420,6+y, 125, 25);
txtItem.setBounds(225,6+y, 182, 27);
txtItemNumber.setBounds(35, 6+y, 182, 27);

if(panel.getComponentCount() >9){

panel.setPreferredSize(new Dimension(100+y,50+y));
panel.add(txtItem);
panel.add(txtItemNumber);
panel.add(lblRemove);

}
}

}

});

panel.add(lblAdd);

最佳答案

不要使用空布局。 Swing 被设计为与布局管理器一起使用。

据我在代码中所知,每次单击按钮时,您都会向面板添加一行 3 个组件。

使用布局管理器可以轻松解决这个问题。也许从使用垂直 BoxLayout 的主面板开始。然后,当您单击按钮时,您将创建一个使用水平 BoxLayout 的面板,并将 3 个组件添加到该面板。然后将此面板添加到主面板。

那么你需要使用:

mainPanel.revalidate();
mainPanel.repaint();

确保调用布局管理器并重新绘制组件。然后布局管理器将为您管理首选尺寸。

关于java - 在动态 JPanel 中添加 JScrollPane,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271713/

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