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()這將調用布局管理器,并且每個組件都將被賦予一個大小/位置。
然后將根據需要顯示滾動條。
添加回答
舉報
0/150
提交
取消
