package exercise;
import java.awt.*;
import javax.swing.*;public class LottoMadness extends JFrame{ /**
 * 
 */
private static final long serialVersionUID = 1L; /**
 * @param args
 */
//set up row 1

JPanel row1 = new JPanel();
ButtonGroup options = new ButtonGroup();
JCheckBox quickpick = new JCheckBox("Quick Pick",false);
JCheckBox personal = new JCheckBox("Personal",true);

//set up row 2
JPanel row2 = new JPanel();
JLabel Lrow2 = new JLabel("Your picks: ",JLabel.RIGHT);//右对齐
JTextField[] numbers = new JTextField[6];
JLabel Lrow2_2 = new JLabel("Winners: ",JLabel.RIGHT);
JTextField[] winners = new JTextField[6];

//set up row 3
JPanel row3 = new JPanel();
JButton stop = new JButton("Stop");
JButton play = new JButton("Play");
JButton reset = new JButton("Reset");

//set up row 4
JPanel row4 = new JPanel();
JLabel Lgot3 = new JLabel("3 of 6: ",JLabel.RIGHT);
JLabel Lgot4 = new JLabel("4 of 6: ",JLabel.RIGHT);
JLabel Lgot5 = new JLabel("5 of 6: ",JLabel.RIGHT);
JLabel Lgot6 = new JLabel("6 of 6: ",JLabel.RIGHT);
JLabel Ldrawing = new JLabel("Drawings: ",JLabel.RIGHT);
JLabel Lyears = new JLabel("Years: ",JLabel.RIGHT);
JTextField Tgot3 = new JTextField("0");
JTextField Tgot4 = new JTextField("0");
JTextField Tgot5 = new JTextField("0");
JTextField Tgot6 = new JTextField("0");
JTextField Tdrawing = new JTextField("0");
JTextField Tyears = new JTextField("0");

//constructors
public LottoMadness(){
super("LottoMadness");
setSize(550,270);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout wholeLayout = new GridLayout(5,1,10,10);// 5 rows and 1 column horizonal and vertical gaps are both 10
setLayout(wholeLayout); //Line 56

FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER,10,10);
row1.setLayout(layout1);
options.add(quickpick);
options.add(personal);
row1.add(quickpick);
row1.add(personal);
add(row1);

GridLayout layout2 = new GridLayout(2,7,10,10);
row2.setLayout(layout2);
row2.add(Lrow2);
row2.add(Lrow2_2);
for(int i=0;i<numbers.length;i++){
numbers[i] = new JTextField();
row2.add(numbers[i]);
}
for (int i=0;i<winners.length;i++){
winners[i] = new JTextField();
row2.add(winners[i]);
}
add(row2);

FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER,10,10);
row3.setLayout(layout3);
row3.add(stop);
row3.add(play);
row3.add(reset);
stop.setEnabled(false);
add(row3);

GridLayout layout4 = new GridLayout(2,3,20,10);
row4.setLayout(layout4);
row4.add(Lgot3);
row4.add(Lgot4);
row4.add(Lgot5);
row4.add(Lgot6);
row4.add(Ldrawing);
row4.add(Lyears);

row4.add(Tgot3);
Tgot3.setEditable(false);
row4.add(Tgot4);
Tgot4.setEditable(false);
row4.add(Tgot5);
Tgot5.setEditable(false);
row4.add(Tgot6);
Tgot6.setEditable(false);
row4.add(Tdrawing);
Tdrawing.setEditable(false);
row4.add(Tyears);
Tyears.setEditable(false);
add(row4);
setVisible(true);

}
public static void main(String[] args) {
// TODO Auto-generated method stub,
LottoMadness lotto = new LottoMadness();//Line 115
}}错误描述
java.lang.Error: Do not use exercise.LottoMadness.setLayout() use exercise.LottoMadness.getContentPane().setLayout() instead
at javax.swing.JFrame.createRootPaneException(Unknown Source)
at javax.swing.JFrame.setLayout(Unknown Source)
at exercise.LottoMadness.<init>(LottoMadness.java:56)
at exercise.LottoMadness.main(LottoMadness.java:115)

解决方案 »

  1.   

    一个建议,你自己建一个panel,放到contentPanel上,然后再对panel进行操作,布局,或者放其他控件
      

  2.   

    可是我不是已经建立了一个JPanel了吗?这样难道不可以吗?
      

  3.   

    楼主的代码在我这里运行没问题,我帮你根据错误提示改了一下,看看你能不能用import java.awt.*;
    import javax.swing.*;public class LottoMadness extends JFrame { /**
     * 
     */
    private static final long serialVersionUID = 1L; /**
     * @param args
     */
    // set up row 1
    JPanel row1 = new JPanel();
    ButtonGroup options = new ButtonGroup();
    JCheckBox quickpick = new JCheckBox("Quick Pick", false);
    JCheckBox personal = new JCheckBox("Personal", true); // set up row 2
    JPanel row2 = new JPanel();
    JLabel Lrow2 = new JLabel("Your picks: ", JLabel.RIGHT);// 右对齐
    JTextField[] numbers = new JTextField[6];
    JLabel Lrow2_2 = new JLabel("Winners: ", JLabel.RIGHT);
    JTextField[] winners = new JTextField[6]; // set up row 3
    JPanel row3 = new JPanel();
    JButton stop = new JButton("Stop");
    JButton play = new JButton("Play");
    JButton reset = new JButton("Reset"); // set up row 4
    JPanel row4 = new JPanel();
    JLabel Lgot3 = new JLabel("3 of 6: ", JLabel.RIGHT);
    JLabel Lgot4 = new JLabel("4 of 6: ", JLabel.RIGHT);
    JLabel Lgot5 = new JLabel("5 of 6: ", JLabel.RIGHT);
    JLabel Lgot6 = new JLabel("6 of 6: ", JLabel.RIGHT);
    JLabel Ldrawing = new JLabel("Drawings: ", JLabel.RIGHT);
    JLabel Lyears = new JLabel("Years: ", JLabel.RIGHT);
    JTextField Tgot3 = new JTextField("0");
    JTextField Tgot4 = new JTextField("0");
    JTextField Tgot5 = new JTextField("0");
    JTextField Tgot6 = new JTextField("0");
    JTextField Tdrawing = new JTextField("0");
    JTextField Tyears = new JTextField("0"); // constructors
    public LottoMadness() {
    super("LottoMadness");
    setSize(550, 270);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GridLayout wholeLayout = new GridLayout(5, 1, 10, 10);// 5 rows and 1
    // column
    // horizonal and
    // vertical gaps
    // are both 10
    //setLayout(wholeLayout); // Line 56
    getContentPane().setLayout(wholeLayout);
    FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER, 10, 10);
    row1.setLayout(layout1);
    options.add(quickpick);
    options.add(personal);
    row1.add(quickpick);
    row1.add(personal);
    add(row1); GridLayout layout2 = new GridLayout(2, 7, 10, 10);
    row2.setLayout(layout2);
    row2.add(Lrow2);
    row2.add(Lrow2_2);
    for (int i = 0; i < numbers.length; i++) {
    numbers[i] = new JTextField();
    row2.add(numbers[i]);
    }
    for (int i = 0; i < winners.length; i++) {
    winners[i] = new JTextField();
    row2.add(winners[i]);
    }
    add(row2); FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER, 10, 10);
    row3.setLayout(layout3);
    row3.add(stop);
    row3.add(play);
    row3.add(reset);
    stop.setEnabled(false);
    add(row3); GridLayout layout4 = new GridLayout(2, 3, 20, 10);
    row4.setLayout(layout4);
    row4.add(Lgot3);
    row4.add(Lgot4);
    row4.add(Lgot5);
    row4.add(Lgot6);
    row4.add(Ldrawing);
    row4.add(Lyears); row4.add(Tgot3);
    Tgot3.setEditable(false);
    row4.add(Tgot4);
    Tgot4.setEditable(false);
    row4.add(Tgot5);
    Tgot5.setEditable(false);
    row4.add(Tgot6);
    Tgot6.setEditable(false);
    row4.add(Tdrawing);
    Tdrawing.setEditable(false);
    row4.add(Tyears);
    Tyears.setEditable(false);
    add(row4);
    setVisible(true); } public static void main(String[] args) {
    // TODO Auto-generated method stub,
    LottoMadness lotto = new LottoMadness();// Line 115 }}
      

  4.   

    3楼的代码我试过了,还是不行,但再改几处就可以了import java.awt.*;
    import javax.swing.*;
    public class LottoMadness extends JFrame{ private static final long serialVersionUID = 1L; /**
     * @param args
     */
    //set up row 1

    JPanel row1 = new JPanel();
    ButtonGroup options = new ButtonGroup();
    JCheckBox quickpick = new JCheckBox("Quick Pick",false);
    JCheckBox personal = new JCheckBox("Personal",true);

    //set up row 2
    JPanel row2 = new JPanel();
    JLabel Lrow2 = new JLabel("Your picks: ",JLabel.RIGHT);//右对齐
    JTextField[] numbers = new JTextField[6];
    JLabel Lrow2_2 = new JLabel("Winners: ",JLabel.RIGHT);
    JTextField[] winners = new JTextField[6];

    //set up row 3
    JPanel row3 = new JPanel();
    JButton stop = new JButton("Stop");
    JButton play = new JButton("Play");
    JButton reset = new JButton("Reset");

    //set up row 4
    JPanel row4 = new JPanel();
    JLabel Lgot3 = new JLabel("3 of 6: ",JLabel.RIGHT);
    JLabel Lgot4 = new JLabel("4 of 6: ",JLabel.RIGHT);
    JLabel Lgot5 = new JLabel("5 of 6: ",JLabel.RIGHT);
    JLabel Lgot6 = new JLabel("6 of 6: ",JLabel.RIGHT);
    JLabel Ldrawing = new JLabel("Drawings: ",JLabel.RIGHT);
    JLabel Lyears = new JLabel("Years: ",JLabel.RIGHT);
    JTextField Tgot3 = new JTextField("0");
    JTextField Tgot4 = new JTextField("0");
    JTextField Tgot5 = new JTextField("0");
    JTextField Tgot6 = new JTextField("0");
    JTextField Tdrawing = new JTextField("0");
    JTextField Tyears = new JTextField("0");

    //constructors
    public LottoMadness(){
    super("LottoMadness");
    setSize(550,270);
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GridLayout wholeLayout = new GridLayout(5,1,10,10);// 5 rows and 1 column horizonal and vertical gaps are both 10
    //setLayout(wholeLayout);
    getContentPane().setLayout(wholeLayout);

    FlowLayout layout1 = new FlowLayout(FlowLayout.CENTER,10,10);
    row1.setLayout(layout1);
    options.add(quickpick);
    options.add(personal);
    row1.add(quickpick);
    row1.add(personal);
    // add(row1);
    getContentPane().add(row1);

    GridLayout layout2 = new GridLayout(2,7,10,10);
    row2.setLayout(layout2);
    row2.add(Lrow2);
    row2.add(Lrow2_2);
    for(int i=0;i<numbers.length;i++){
    numbers[i] = new JTextField();
    row2.add(numbers[i]);
    }
    for (int i=0;i<winners.length;i++){
    winners[i] = new JTextField();
    row2.add(winners[i]);
    }
    // add(row2);
    getContentPane().add(row2);

    FlowLayout layout3 = new FlowLayout(FlowLayout.CENTER,10,10);
    row3.setLayout(layout3);
    row3.add(stop);
    row3.add(play);
    row3.add(reset);
    stop.setEnabled(false);
    //add(row3);
    getContentPane().add(row3);

    GridLayout layout4 = new GridLayout(2,3,20,10);
    row4.setLayout(layout4);
    row4.add(Lgot3);
    row4.add(Lgot4);
    row4.add(Lgot5);
    row4.add(Lgot6);
    row4.add(Ldrawing);
    row4.add(Lyears);

    row4.add(Tgot3);
    Tgot3.setEditable(false);
    row4.add(Tgot4);
    Tgot4.setEditable(false);
    row4.add(Tgot5);
    Tgot5.setEditable(false);
    row4.add(Tgot6);
    Tgot6.setEditable(false);
    row4.add(Tdrawing);
    Tdrawing.setEditable(false);
    row4.add(Tyears);
    Tyears.setEditable(false);
    //add(row4);
    getContentPane().add(row4);
    setVisible(true);

    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub,
    LottoMadness lotto = new LottoMadness(); }
    }不知道这是不是与编译器的版本有关?我用的是eclipse3.3.1
      

  5.   

    你这个是ide的版本,估计你的jdk或者jre是1.4的,1.4不能用我的方法,1.5就可以了