如何居中对齐具有GridLayout的JPanel中的所有内容

时间:2014-12-21 13:23:23

标签: java swing jframe jpanel grid-layout

最近,我asked a question了解了JPanel如何在JFrame中从上到下对齐GridLayout()。用户告诉我使用JPanel。我把一切都搞定了,但是我忘了提到我想要对齐JPanel s中的所有组件。

我的第一个JLabel有一个JPanel 我的第二个JRadioButton有5个JPanel s 我的第三个JLabel有一个JPanel 我的第四个JButton有一个JRadioButton

选择任何JLabel都会更改第三个JPanelJLabel的文字。当程序启动时,JFrame没有文字。

我的GridLayoutJPanel。所有BoxLayoutBoxLayout.X_AxisJFrame}都会添加到class GUI extends JFrame implements ActionListener { JPanel pan1,pan2,pan3,pan4; //4 JPanels JRadioButton rad1,rad2,rad3,rad4,rad5; //5 RadioButtons JButton button; //A JButton JLabel label; //A JLabel public GUI(String header) { super(header); setLayout(new GridLayout(0,1,0,6)); //set GridLayout to JFrame setBounds(350,325,600,125); setResizable(false); creator(); adder(); commander(); add(pan1); add(pan2); add(pan3); add(pan4) //Add all 4 panels to JFrame } private void adder() { pan1.setLayout(new BoxLayout(pan1,BoxLayout.X_AXIS)); pan2.setLayout(new BoxLayout(pan2,BoxLayout.X_AXIS)); pan3.setLayout(new BoxLayout(pan3,BoxLayout.X_AXIS)); pan4.setLayout(new BoxLayout(pan4,BoxLayout.X_AXIS)); //Layout for all 4 JPanels pan1.add(new JLabel("Choose a Security Level")); ButtonGroup group=new ButtonGroup(); group.add(rad1); group.add(rad2); group.add(rad3); group.add(rad4); group.add(rad5); pan2.add(rad1); pan2.add(rad2); pan2.add(rad3); pan2.add(rad4); pan2.add(rad5); pan3.add(label); pan4.add(button); } private void creator() { pan1=new JPanel(); pan2=new JPanel(); pan3=new JPanel(); pan4=new JPanel(); rad1=new JRadioButton("Security Level 1"); rad2=new JRadioButton("Security Level 2"); rad3=new JRadioButton("Security Level 3"); rad4=new JRadioButton("Security Level 4"); rad5=new JRadioButton("Security Level 5"); button=new JButton("Move On"); label=new JLabel(); } private void commander() { rad1.addActionListener(this); rad2.addActionListener(this); rad3.addActionListener(this); rad4.addActionListener(this); rad5.addActionListener(this); rad1.setActionCommand("radio1"); rad2.setActionCommand("radio2"); rad3.setActionCommand("radio3"); rad4.setActionCommand("radio4"); rad5.setActionCommand("radio5"); button.addActionListener(this); } public void actionPerformed(ActionEvent evt) { //When button is pressed,the text in label changes if(evt.getActionCommand().equals("radio1")) label.setText("Very Easy to bypass"); else if(evt.getActionCommand().equals("radio2")) label.setText("Easy to bypass"); else if(evt.getActionCommand().equals("radio3")) label.setText("Can bypass Sometimes"); else if(evt.getActionCommand().equals("radio4")) label.setText("Hard to bypass"); else if(evt.getActionCommand().equals("radio5")) label.setText("Very Hard to bypass"); else { //Code here } repaint(); //More code here.... } } 中。以下是我的代码片段:

{{1}}

这是我得到的输出(忽略绿线): My program

我希望一切都在中心而不是在左边对齐。我应该怎么做才能调整它?

1 个答案:

答案 0 :(得分:3)

变化:

pan1.setLayout(new BoxLayout(pan1,BoxLayout.X_AXIS));

类似于:

pan1.setLayout(new FlowLayout(FlowLayout.CENTER));

..与其他方框布局相同。