滚动条在Java Swing中没有出现

时间:2018-04-19 04:16:40

标签: java swing jscrollpane jscrollbar null-layout-manager

在我的程序中,我向Panel添加了一个Label,两个RadioButtons,一个TextField和提交按钮。我的radiobuttons和提交按钮没有以当前窗口大小显示,因为我已经在JFrame窗口中设置了它们的位置。但是Scrollbars没有出现在窗口中。告诉我我错在哪里。

这是我的代码

import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.*;
class SwingForm extends JFrame
{
    SwingForm()
    {
        super();
        Container c=getContentPane();
        c.setLayout(new BorderLayout());
        JPanel p=new JPanel();
        p.setLayout(null);
        JLabel l=new JLabel("First Name");
        l.setBounds(50, 50, 70, 20);
        JTextField j=new JTextField();
        j.setBounds(150, 50, 70, 20);
        JRadioButton j1=new JRadioButton("Male");
        j1.setBounds(50, 300, 70, 50);
        JRadioButton j2=new JRadioButton("Female");
        j2.setBounds(170, 300, 70, 50);
        JButton b=new JButton("Submit");
        b.setBounds(100, 600, 100, 100);
        ButtonGroup bg=new ButtonGroup();
        bg.add(j1);
        bg.add(j2);
        p.add(l);  
        p.add(j);
        p.add(j1);
        p.add(j2);
        p.add(b);
        int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
        int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
        JScrollPane jp=new JScrollPane(p,v,h);
        c.add(jp,BorderLayout.CENTER);
        setVisible(true);
        setSize(300,300);
    }
    public static void main(String args[])
    {
        new SwingForm();
    }
}

这是输出 Scrollbars not appering even i have radiobutton and submit button below the window

enter image description here

1 个答案:

答案 0 :(得分:1)

p.setLayout(null);是您的(最重要的问题)。 JScrollPane将依赖其preferredSize视图来确定何时应显示滚动条。

让这个工作的最佳方法是使用一个或多个适当的布局管理器,让API完成它的工作

以下示例实际上使用了3个布局管理器BorderLayout(默认为JFrame),FlowLayout(默认为JPanel)和{{ 1}}

有关详细信息,请参阅Layout out components in a container

Hello scrollbars

GridBagLayout