2. import javax.swing.*;
3.
4. public class Lotto extends JFrame
5. {
6. JPanel row1=new JPanel();
7. ButtonGroup option=new ButtonGroup();
8. JCheckBox quickpick=new JCheckBox("Quick Pick ",false);
9. JCheckBox personal=new JCheckBox("Personal", true);
10.
11. JPanel row2=new JPanel();
12. JLabel numbersLabel =new JLabel("Your picks: ",JLabel.RIGHT);
13. JTextField[] numbers=new JTextField[6];
14. JLabel winnersLabel=new JLabel("Winners: ", JLabel.RIGHT);
15. JTextField[] winners=new JTextField[6];
16.
17. JPanel row3=new JPanel();
18. JButton stop=new JButton("stop");
19. JButton play=new JButton("Play");
20. JButton reset=new JButton("Reset");
21.
22. JPanel row4=new JPanel();
23. JLabel got3Label=new JLabel("3 of 6: ", JLabel.RIGHT);
24. JTextField got3=new JTextField();
25. JLabel got4Label=new JLabel("4 of 6: ", JLabel.RIGHT);
26. JTextField got4=new JTextField();
27. JLabel got5Label=new JLabel("5 of 6: ", JLabel.RIGHT);
28. JTextField got5=new JTextField();
29. JLabel got6Label=new JLabel("6 of 6: ", JLabel.RIGHT);
30. JTextField got6=new JTextField(10);
31. JLabel drawingsLabel=new JLabel("Drawings: ", JLabel.RIGHT);
32. JTextField drawings=new JTextField();
33. JLabel yearsLabel=new JLabel("Years: ",JLabel.RIGHT);
34. JTextField years=new JTextField();
35.
36. public Lotto()
37. {
38. super("Lotto Madness");
39. setSize(550,270);
40. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
41. GridLayout layout=new GridLayout(5,1,10,10);
42. Container pane=getContentPane();
43.
44. pane.setLayout(layout);
45.
46. FlowLayout layout1=new FlowLayout(FlowLayout.CENTER,10,10);
47. option.add(quickpick);
48. option.add(personal);
49. row1.setLayout(layout1);
50. row1.add(quickpick);
51. row1.add(personal);
52. pane.add(row1);
53.
54. GridLayout layout2=new GridLayout(2,7,10,10);
55. row2.setLayout(layout2);
56. //row2.setLayout(layout2);
57. row2.add(numbersLabel);
58. for (int i=0;i<6;i++)
59. {
60. numbers[i]=new JTextField();
61. row2.add(numbers[i]);
62.
63. }
64.
65. row2.add(winnersLabel);
66. for(int i=0;i<6;i++)
67. {
68. winners[i]=new JTextField();
69. winners[i].setEditable(true);
70. row2.add(winners[i]);
71. }
72. pane.add(row2);
73.
74. FlowLayout layout3=new FlowLayout(FlowLayout.CENTER,10,10);
75. row3.setLayout(layout3);
76. row3.setEnabled(false);
77. row3.add(stop);
78. row3.add(play);
79. row3.add(reset);
80. pane.add(row3);
81.
82. GridLayout layout4=new GridLayout(2,3,20,10);
83. row4.setLayout(layout4);
84. row4.setLayout(layout4);
85. row4.add(got3Label);
86. got3.setEditable(false);
87. row4.add(got3);
88. row4.add(got4Label);
89. got4.setEditable(false);
90. row4.add(got4);
91. row4.add(got5Label);
92. got5.setEditable(false);
93. row4.add(got5);
94. row4.add(got6Label);
95. got6.setEditable(false);
96. row4.add(got6);
97. row4.add(drawingsLabel);
98. drawings.setEditable(false);
99. row4.add(drawings);
100. row4.add(yearsLabel);
101. years.setEditable(false);
102. row4.add(years);
103. pane.add(row4);
104. setContentPane(pane);
105. setVisible(true);
106. }
107. public static void main(String[] arguments)
108. {
109. Lotto frame=new Lotto();
110. }
111.}
我把第82和54行代码,分别改为:GridLayout layout4=new GridLayout(2,6,20,10); 和GridLayout layout2=new GridLayout(2,6,10,10);
PS:只改了GridLayout()的第二个参数,我把第二个参数改为任意数,都没有变化,这是怎么回事?
还有就是GridLayout()具体实干什么的给我讲讲吧?!
14 个解决方案
#1
你类从新编译了没有?
我刚才就碰到这个问题, 哈哈
我刚才就碰到这个问题, 哈哈
#2
要重新编译才能看出变化!
The GridLayout class is a layout manager that lays out a container's components in a rectangular grid. The container is divided into equal-sized rectangles, and one component is placed in each rectangle.
The GridLayout class is a layout manager that lays out a container's components in a rectangular grid. The container is divided into equal-sized rectangles, and one component is placed in each rectangle.
#3
同意楼上的
#4
我重新编译了呀,
编译是指:javac LottoMadness吧?!
编译是指:javac LottoMadness吧?!
#5
重新编译之后还有问题马 ?
#6
不是有问题,而是为什么我把那个参数改变后没有变化呢?
我把GridLayout()的第二个参数改变为其他的数字都没有任何变化,这是为什么?
我把GridLayout()的第二个参数改变为其他的数字都没有任何变化,这是为什么?
#7
对"大鱼吃小鱼,小鱼吃虾米,虾米吃什么?" 和“半边海”你们对GridLayout()的定义确定吗?
#8
如果所加入的component数量大于grids的数量,columns将自动扩充
比如:你定义了一个3行2列的布局,而你加入了9个组件
则,你的布局会自动扩充成3行3列
比如:你定义了一个3行2列的布局,而你加入了9个组件
则,你的布局会自动扩充成3行3列
#9
可能是没有重新编译,呵呵
#10
對"我不會編程",如果按你這種說法﹐只要定了几行的話﹐列就自己定義了。
對"整狼專家"﹐我重新編譯過了。
不信的話﹐你自己試試﹗
對"整狼專家"﹐我重新編譯過了。
不信的話﹐你自己試試﹗
#11
import java.awt.*;
import javax.swing.*;
public class Lotto extends JFrame
{
JLabel numbersLabel =new JLabel("Your picks: ",JLabel.RIGHT);
JTextField[] numbers=new JTextField[6];
JLabel winnersLabel=new JLabel("Winners: ", JLabel.RIGHT);
JTextField[] winners=new JTextField[6];
public Lotto()
{
super("Lotto ");
setSize(550,270);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout=new GridLayout(2,7,10,10);
Container pane=getContentPane();
pane.setLayout(layout);
pane.setLayout(layout);
//row2.setLayout(layout2);
pane.add(numbersLabel);
for (int i=0;i<6;i++)
{
numbers[i]=new JTextField();
pane.add(numbers[i]);
}
pane.add(winnersLabel);
for(int i=0;i<6;i++)
{
winners[i]=new JTextField();
winners[i].setEditable(false);
pane.add(winners[i]);
}
setVisible(true);
setContentPane(pane);
}
public static void main(String[] arguments)
{
Lotto lo=new Lotto();
}
}
我现在越来越不明白了,我把GridLayout layout=new GridLayout(2,7,10,10);中GridLayout()中的前两个参数更改,发现特别有意思的情况出现了。
我把改成GridLayout layout=new GridLayout(5,1,10,10);
他运行时出现的是5行3列。
如果我把它改成GridLayout layout=new GridLayout(8,1,10,10);
他运行时出现的是7行2列。
如果我把它改成GridLayout layout=new GridLayout(14,1,10,10);
他运行时出现的是14行1列。
这到底是怎么回事呢?
难道是由它本身决定的吗?
import javax.swing.*;
public class Lotto extends JFrame
{
JLabel numbersLabel =new JLabel("Your picks: ",JLabel.RIGHT);
JTextField[] numbers=new JTextField[6];
JLabel winnersLabel=new JLabel("Winners: ", JLabel.RIGHT);
JTextField[] winners=new JTextField[6];
public Lotto()
{
super("Lotto ");
setSize(550,270);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout=new GridLayout(2,7,10,10);
Container pane=getContentPane();
pane.setLayout(layout);
pane.setLayout(layout);
//row2.setLayout(layout2);
pane.add(numbersLabel);
for (int i=0;i<6;i++)
{
numbers[i]=new JTextField();
pane.add(numbers[i]);
}
pane.add(winnersLabel);
for(int i=0;i<6;i++)
{
winners[i]=new JTextField();
winners[i].setEditable(false);
pane.add(winners[i]);
}
setVisible(true);
setContentPane(pane);
}
public static void main(String[] arguments)
{
Lotto lo=new Lotto();
}
}
我现在越来越不明白了,我把GridLayout layout=new GridLayout(2,7,10,10);中GridLayout()中的前两个参数更改,发现特别有意思的情况出现了。
我把改成GridLayout layout=new GridLayout(5,1,10,10);
他运行时出现的是5行3列。
如果我把它改成GridLayout layout=new GridLayout(8,1,10,10);
他运行时出现的是7行2列。
如果我把它改成GridLayout layout=new GridLayout(14,1,10,10);
他运行时出现的是14行1列。
这到底是怎么回事呢?
难道是由它本身决定的吗?
#12
你再仔细想想我的话!
你总共添加了14个组件
2行7列时,刚好,不出现任何问题
5行1列时,不够,至少要扩充到3列,所以是5行3列
8行1列时,不够,扩充到2列,因为加入组件是逐行添加的(从先添加的是editable的textfield,后添加的是uneditable的textfield可以看出),所以第8行没有组件可加了
这是出现的是8行2列,第8行存在,只是没有组件,你误认为只有7行
14行1列,当然也正常
你总共添加了14个组件
2行7列时,刚好,不出现任何问题
5行1列时,不够,至少要扩充到3列,所以是5行3列
8行1列时,不够,扩充到2列,因为加入组件是逐行添加的(从先添加的是editable的textfield,后添加的是uneditable的textfield可以看出),所以第8行没有组件可加了
这是出现的是8行2列,第8行存在,只是没有组件,你误认为只有7行
14行1列,当然也正常
#13
§Ú
#14
對'我不會編程'
你能給我解釋一下﹐
GridLayout()的定義嗎﹖
謝謝﹗
你能給我解釋一下﹐
GridLayout()的定義嗎﹖
謝謝﹗
#1
你类从新编译了没有?
我刚才就碰到这个问题, 哈哈
我刚才就碰到这个问题, 哈哈
#2
要重新编译才能看出变化!
The GridLayout class is a layout manager that lays out a container's components in a rectangular grid. The container is divided into equal-sized rectangles, and one component is placed in each rectangle.
The GridLayout class is a layout manager that lays out a container's components in a rectangular grid. The container is divided into equal-sized rectangles, and one component is placed in each rectangle.
#3
同意楼上的
#4
我重新编译了呀,
编译是指:javac LottoMadness吧?!
编译是指:javac LottoMadness吧?!
#5
重新编译之后还有问题马 ?
#6
不是有问题,而是为什么我把那个参数改变后没有变化呢?
我把GridLayout()的第二个参数改变为其他的数字都没有任何变化,这是为什么?
我把GridLayout()的第二个参数改变为其他的数字都没有任何变化,这是为什么?
#7
对"大鱼吃小鱼,小鱼吃虾米,虾米吃什么?" 和“半边海”你们对GridLayout()的定义确定吗?
#8
如果所加入的component数量大于grids的数量,columns将自动扩充
比如:你定义了一个3行2列的布局,而你加入了9个组件
则,你的布局会自动扩充成3行3列
比如:你定义了一个3行2列的布局,而你加入了9个组件
则,你的布局会自动扩充成3行3列
#9
可能是没有重新编译,呵呵
#10
對"我不會編程",如果按你這種說法﹐只要定了几行的話﹐列就自己定義了。
對"整狼專家"﹐我重新編譯過了。
不信的話﹐你自己試試﹗
對"整狼專家"﹐我重新編譯過了。
不信的話﹐你自己試試﹗
#11
import java.awt.*;
import javax.swing.*;
public class Lotto extends JFrame
{
JLabel numbersLabel =new JLabel("Your picks: ",JLabel.RIGHT);
JTextField[] numbers=new JTextField[6];
JLabel winnersLabel=new JLabel("Winners: ", JLabel.RIGHT);
JTextField[] winners=new JTextField[6];
public Lotto()
{
super("Lotto ");
setSize(550,270);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout=new GridLayout(2,7,10,10);
Container pane=getContentPane();
pane.setLayout(layout);
pane.setLayout(layout);
//row2.setLayout(layout2);
pane.add(numbersLabel);
for (int i=0;i<6;i++)
{
numbers[i]=new JTextField();
pane.add(numbers[i]);
}
pane.add(winnersLabel);
for(int i=0;i<6;i++)
{
winners[i]=new JTextField();
winners[i].setEditable(false);
pane.add(winners[i]);
}
setVisible(true);
setContentPane(pane);
}
public static void main(String[] arguments)
{
Lotto lo=new Lotto();
}
}
我现在越来越不明白了,我把GridLayout layout=new GridLayout(2,7,10,10);中GridLayout()中的前两个参数更改,发现特别有意思的情况出现了。
我把改成GridLayout layout=new GridLayout(5,1,10,10);
他运行时出现的是5行3列。
如果我把它改成GridLayout layout=new GridLayout(8,1,10,10);
他运行时出现的是7行2列。
如果我把它改成GridLayout layout=new GridLayout(14,1,10,10);
他运行时出现的是14行1列。
这到底是怎么回事呢?
难道是由它本身决定的吗?
import javax.swing.*;
public class Lotto extends JFrame
{
JLabel numbersLabel =new JLabel("Your picks: ",JLabel.RIGHT);
JTextField[] numbers=new JTextField[6];
JLabel winnersLabel=new JLabel("Winners: ", JLabel.RIGHT);
JTextField[] winners=new JTextField[6];
public Lotto()
{
super("Lotto ");
setSize(550,270);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
GridLayout layout=new GridLayout(2,7,10,10);
Container pane=getContentPane();
pane.setLayout(layout);
pane.setLayout(layout);
//row2.setLayout(layout2);
pane.add(numbersLabel);
for (int i=0;i<6;i++)
{
numbers[i]=new JTextField();
pane.add(numbers[i]);
}
pane.add(winnersLabel);
for(int i=0;i<6;i++)
{
winners[i]=new JTextField();
winners[i].setEditable(false);
pane.add(winners[i]);
}
setVisible(true);
setContentPane(pane);
}
public static void main(String[] arguments)
{
Lotto lo=new Lotto();
}
}
我现在越来越不明白了,我把GridLayout layout=new GridLayout(2,7,10,10);中GridLayout()中的前两个参数更改,发现特别有意思的情况出现了。
我把改成GridLayout layout=new GridLayout(5,1,10,10);
他运行时出现的是5行3列。
如果我把它改成GridLayout layout=new GridLayout(8,1,10,10);
他运行时出现的是7行2列。
如果我把它改成GridLayout layout=new GridLayout(14,1,10,10);
他运行时出现的是14行1列。
这到底是怎么回事呢?
难道是由它本身决定的吗?
#12
你再仔细想想我的话!
你总共添加了14个组件
2行7列时,刚好,不出现任何问题
5行1列时,不够,至少要扩充到3列,所以是5行3列
8行1列时,不够,扩充到2列,因为加入组件是逐行添加的(从先添加的是editable的textfield,后添加的是uneditable的textfield可以看出),所以第8行没有组件可加了
这是出现的是8行2列,第8行存在,只是没有组件,你误认为只有7行
14行1列,当然也正常
你总共添加了14个组件
2行7列时,刚好,不出现任何问题
5行1列时,不够,至少要扩充到3列,所以是5行3列
8行1列时,不够,扩充到2列,因为加入组件是逐行添加的(从先添加的是editable的textfield,后添加的是uneditable的textfield可以看出),所以第8行没有组件可加了
这是出现的是8行2列,第8行存在,只是没有组件,你误认为只有7行
14行1列,当然也正常
#13
§Ú
#14
對'我不會編程'
你能給我解釋一下﹐
GridLayout()的定義嗎﹖
謝謝﹗
你能給我解釋一下﹐
GridLayout()的定義嗎﹖
謝謝﹗