2013-04-07 30 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