如何制作java awt程序,其中第一行包含文本字段,接下来的5行每行包含5个按钮,接下来的4行每行包含4个按钮。以及如何设置这些按钮的大小和它们之间的空间?我尝试使用3个面板但没有工作。
(由我制作的示例程序,但没有显示任何内容)
`import java.awt.*;
class cal extends Frame {
cal(){
Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
p1.setLayout(new GridLayout(2,3));
p2.setLayout(new GridLayout(2,2));
TextField k=new TextField("0",20);
Button a=new Button("HI");
Button b=new Button("HI");
Button c=new Button("HI");
Button d=new Button("HI");
Button e=new Button("HI");
Button l=new Button("Hello");
Button g=new Button("Hello");
Button h=new Button("Hello");
Button i=new Button("Hello");
p1.add(a);
p1.add(b);
p1.add(c);
p1.add(d);
p1.add(e);
p2.add(l);
p2.add(g);
p2.add(h);
p2.add(i);
Frame f=new Frame();
f.setSize(500,500);
f.add(p3);
f.add(p1);
f.add(p2);
show();
}
public static void main(String[] args){
new cal();}
}`
答案 0 :(得分:3)
add(...)
方法将Panel(应该是JPanels)添加到主类。您将它们添加到您调用f
的Frame对象,但是您显示代表当前类的Frame,this
- 两个非常完全不同的对象。 show()
之类的弃用方法。这样做可能很危险,编译器应该给你一个警告,你应该留意警告。答案 1 :(得分:0)
您需要将p1和p2的GridLayout值替换为
p1.setLayout(new GridLayout(5,5));//To incease gap between components you need to use new GridLayout(5,5,hgap,ygap)
p2.setLayout(new GridLayout(4,4));//similar here.
并且您的代码未正确完成此处删除show()函数并将其替换为:
f.setLayout(new GridLayout(3,1));// you may want three rows and 1 column for this.
f.setVisible(true);//for frame should be visible.
请点击链接如何增加gridlayout中组件之间的差距:http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html。
为什么不使用Java swing。它更好,并具有先进的功能。
您的修改后的代码将是:
import java.awt.*;
public class Cal extends Frame {
Cal(){
Panel p1=new Panel();
Panel p2=new Panel();
Panel p3=new Panel();
p1.setLayout(new GridLayout(5,5));
p2.setLayout(new GridLayout(4,4));
TextField k=new TextField();
Button a=new Button("HI");
Button b=new Button("HI");
Button c=new Button("HI");
Button d=new Button("HI");
Button e=new Button("HI");
Button l=new Button("Hello");
Button g=new Button("Hello");
Button h=new Button("Hello");
Button i=new Button("Hello");
p1.add(a);
p1.add(b);
p1.add(c);
p1.add(d);
p1.add(e);
p2.add(l);
p2.add(g);
p2.add(h);
p2.add(i);
p3.add(k);
Frame f=new Frame();
f.setLayout(new GridLayout(3,1));
f.setSize(500,500);
f.add(p3);
f.add(p1);
f.add(p2);
f.setVisible(true);
}
public static void main(String[] args){
new Cal();}
}