2013-04-07 33 views
1

我正在使用FlowLayout.CENTER居中一个字符串和一些复选框,但它没有居中它们。我以前用过这个,它工作得很好。代码如下:FlowLayout.CENTER不居中组件

import javax.swing.*; 
import java.awt.*; 

public class pizza extends JFrame { 
//row 1 
    JPanel row1 = new JPanel(); 
    JLabel select = new JLabel("Please select the size you would like"); 
//row 2 
    JPanel row2 = new JPanel(); 
    JCheckBox ninein = new JCheckBox("9 inch, $5.00", false); 
    JCheckBox twelvein = new JCheckBox("12 inch, $10.00", false); 
    JCheckBox seventeenin = new JCheckBox("17 inch, $15.00", false); 
//row 3 
    JPanel row3 = new JPanel(); 
    JLabel toppingslab = new JLabel("Please select your toppings"); 
    JCheckBox cheese = new JCheckBox("Cheese, .50"); 
    JCheckBox pepperoni = new JCheckBox("Pepperoni, .50"); 
    JCheckBox onions = new JCheckBox("Onions, .50"); 
    JCheckBox peppers = new JCheckBox("Peppers, .50"); 
    JCheckBox bacon = new JCheckBox("Bacon! Free (because it's bacon)"); 
//row4 
    JPanel row4 = new JPanel(); 
    JLabel totallab = new JLabel("Total"); 
    JTextField total = new JTextField(10); 

public pizza(){ 
    setTitle("Pizza Ordering"); 
    setSize(500,500); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setVisible(true); 
    total.setEnabled(false); 

FlowLayout one = new FlowLayout(FlowLayout.CENTER); 
    setLayout(one); 

    row1.add(select); 
    add(row1); 

    row2.add(ninein); 
    row2.add(twelvein); 
    row2.add(seventeenin); 
    add(row2); 

GridLayout two = new GridLayout(6,2); 
    row3.setLayout(two); 

    row3.add(toppingslab); 
    row3.add(cheese); 
    row3.add(pepperoni); 
    row3.add(onions); 
    row3.add(peppers); 
    row3.add(bacon); 
    add(row3); 

FlowLayout three = new FlowLayout(FlowLayout.RIGHT); 
    setLayout(three); 

    row4.add(totallab); 
    row4.add(total); 
    add(row4); 
    } 
public static void main(String[] args) { 
    pizza pizz = new pizza(); 
} 
} 

RIGHT或LEFT都不会影响它,它只是将它与右对齐。

+0

一些基本的调试技巧。 1)注释掉你的代码,并尝试添加第一个面板到框架,看看它是否工作。 2)然后添加第二个面板的代码。 3)然后等第三等当它停止工作,那么你可以看看你的代码,看看有什么不同。此外,请遵循标准的Java命名约定。类以大写字符开头。向我展示不符合此标准的API中的一个类。不要组成自己的约定,特别是如果你想要其他人阅读你的代码。 – camickr 2013-04-07 02:43:01

回答

2

的原因所有组件右对齐的是,你的JFrame布局重置为FlowLayout.RIGHT这里:

FlowLayout three = new FlowLayout(FlowLayout.RIGHT); 
setLayout(three); 

这取代了早期的呼叫中心对齐组件。

+0

这么多试图教一些基本的调试技术。 – camickr 2013-04-07 03:02:00

+0

这是有道理的。谢谢! – Rostro 2013-04-07 03:03:16