在我的程序中,我向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();
}
}
答案 0 :(得分:1)
p.setLayout(null);
是您的(最重要的问题)。 JScrollPane
将依赖其preferredSize
视图来确定何时应显示滚动条。
让这个工作的最佳方法是使用一个或多个适当的布局管理器,让API完成它的工作
以下示例实际上使用了3个布局管理器BorderLayout
(默认为JFrame
),FlowLayout
(默认为JPanel
)和{{ 1}}
有关详细信息,请参阅Layout out components in a container
GridBagLayout