为什么面板上的界限首先不起作用?它只显示顶部的所有内容,并且不按我设置的顺序显示边界?单选按钮应显示在另一个下方,下一个按钮应显示在最右边但不起作用?
public MyWizard() {
panelContainer.setLayout(c1);
panelFirst.add(btNext);
panelSecond.add(btNextTwo);
panelFirst.setBackground(Color.BLUE);
panelSecond.setBackground(Color.RED);
panelThird.setBackground(Color.GREEN);
panelContainer.add(panelFirst, "1");
panelContainer.add(panelSecond,"2");
panelContainer.add(panelThird,"3");
c1.show(panelContainer, "1");
btNext.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
c1.show(panelContainer,"2");
}
});
btNextTwo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
c1.show(panelContainer,"3");
}
});
RadioButtons();
Button();
frame.add(panelContainer);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setSize(600,360);
frame.setVisible(true);
}
public void RadioButtons() {
btLdap = new JRadioButton ("Ldap");
btLdap.setBounds(60,85,100,20);
panelFirst.add(btLdap);
btKerbegos = new JRadioButton ("Kerbegos");
btKerbegos.setBounds(60,115,100,20);
panelFirst.add(btKerbegos);
btSpnego =new JRadioButton("Spnego");
btSpnego.setBounds(60,145,100,20);
panelFirst.add(btSpnego);
btSaml2 = new JRadioButton("Saml2");
btSaml2.setBounds(60,175,100,20);
panelFirst.add(btSaml2);
}
public void Button() {
btNext.setBounds(400,260,100,20);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MyWizard();
}
});
}
}
答案 0 :(得分:2)
假设panelFirst
是JPanel
之类的(或延伸),它将受布局管理器的控制(在这种情况下,很可能是FlowLayout
)。< / p>
强烈建议您避免setBounds
,setLocation
和setSize
,而是依赖布局管理器
图形界面需要在各种不同的平台上运行,每个平台都具有独特的渲染属性。为了解决这个问题,Java / Swing / AWT的开发人员设计了LayoutManager
API。这样可以更轻松地开发可在多个不同平台上运行的复杂用户界面
答案 1 :(得分:1)
如果你的单选按钮应该在彼此之下,那么为它们创建一个面板,并将面板的布局设置为BoxLayout
,如下所示:
JPanel p = new JPanel();
p.setLayout(new BoxLayout(p,BoxLayout.Y_AXIS));
p.add(...);
//then add p to the fram's container or to some other container