为了账号安全,请及时绑定邮箱和手机立即绑定

根据用户输入生成 java swing 字段

根据用户输入生成 java swing 字段

扬帆大鱼 2023-04-13 17:00:45
Java初学者在这里。我正在尝试在 JScrollPane 内的 JPanel 中根据用户输入(输入要生成的标签数量在 0 到 50 之间)生成标签。标签生成正确,但问题是面板无法向下滚动以查看所有标签。是因为我在面板上使用了绝对布局吗?如果是,那么解决方案可能是什么?请指导。注意:我在 for 循环中使用 50 个 JLabel 数组制作了标签。糟糕的编程实践可能但有效。这是代码片段        frame = new JFrame();        frame.setSize(800, 800);        frame.getContentPane().setLayout(null);        JScrollPane scrollPane = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);        scrollPane.setBounds(103, 37, 439, 350);        frame.getContentPane().add(scrollPane);        JPanel panel = new JPanel();        scrollPane.setViewportView(panel);        panel.setLayout(null);        JButton btnGenerateLabels = new JButton("Generate Labels");        btnGenerateLabels.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                JLabel[] lab =  new JLabel[50];                int  y = 50;                for(int i=0; i<50; i++)                {                    lab[i] = new JLabel();                    lab[i].setText("Label "+(i+1));                    panel.add(lab[i]);                    lab[i].setBounds(180, y, 97, 25);                    y += 30;                }            }        });        btnGenerateLabels.setBounds(129, 23, 152, 25);        panel.add(btnGenerateLabels);
查看完整描述

1 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

是因为我在面板上使用了绝对布局吗?

是的。不要使用空布局。Swing 旨在与布局管理器一起使用。

解决方案是使用布局管理器,可能是建议的 GridLayout。

将所有组件添加到面板后,您需要在面板上调用revalidate()和。repaint()这将调用布局管理器,并且每个组件都将被赋予一个大小/位置。

然后将根据需要显示滚动条。


查看完整回答
反对 回复 2023-04-13
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信