我正在使用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都不會影響它,它只是將它與右對齊。
一些基本的調試技巧。 1)註釋掉你的代碼,並嘗試添加第一個面板到框架,看看它是否工作。 2)然後添加第二個面板的代碼。 3)然後等第三等當它停止工作,那麼你可以看看你的代碼,看看有什麼不同。此外,請遵循標準的Java命名約定。類以大寫字符開頭。向我展示不符合此標準的API中的一個類。不要組成自己的約定,特別是如果你想要其他人閱讀你的代碼。 – camickr 2013-04-07 02:43:01