如何在java awt中添加按钮和面板

时间:2014-04-12 16:11:48

标签: java button awt

如何制作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();}
}`

2 个答案:

答案 0 :(得分:3)

  1. 不要为您的GUI使用AWT库组件,而是使用Swing库的组件,如JFrame,JPanel,JButton ......
  2. 要在顶级窗口中查看内容,您必须将组件添加到显示的顶级窗口,而您永远不会这样做。换句话说,您需要通过add(...)方法将Panel(应该是JPanels)添加到主类。您将它们添加到您调用f的Frame对象,但是您显示代表当前类的Frame,this - 两个非常完全不同的对象。
  3. 使代码正常工作的一种方法是让您的类扩展顶级窗口,而是创建一个顶级窗口(正如您正在做的那样)并在之后显示它添加组件(因为您没有这样做)。
  4. 避免调用show()之类的弃用方法。这样做可能很危险,编译器应该给你一个警告,你应该留意警告。
  5. 了解布局管理器并使用它们。您当前正在使用它们,因为您的组件带有默认布局管理器,但未正确使用它们。
  6. 最重要的是,请阅读您可以找到here的教程,因为您无法猜测这些内容。
  7. 不要在这里发布代码,因为它很难阅读。

答案 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();}
}