import java.awt.*;
//import java.awt.event.*;public class Testa{

public static void main(String[] args ){
Testa te = new Testa();
te.Inner();
//Testa.FrameTest  ft = te.new FrameTest(); 
}

public FrameTest Inner(){
return new FrameTest();
}
private class FrameTest extends Frame{
public  FrameTest(){
TextField tf1 = new TextField();
TextField tf2 = new TextField();
TextField tf3 = new TextField();

Label la1 =new Label("+");
Button b = new Button("=");

add(tf1);
add(la1);
add(tf2);
add(b);
add(tf3);

pack();
setVisible(true);


}
}
}

解决方案 »

  1.   

    由于布局的问题,或是对控件的初始大小未设定,而造成了一个textfiled占满了整个窗体解决:LZ可以setLayout()一个布局+用setPreferredSize()为每个控件设置大小,就会出现LZ所期望的效果的
      

  2.   

    补充下  写完代码  ctrl+alt+f    代码格式化
      

  3.   

    Exception in thread "main" java.lang.NoSuchMethodError: calculateSecurityWarningPosition
    at java.awt.Window.initIDs(Native Method)
    at java.awt.Window.<clinit>(Unknown Source)
    at Testa.main(Testa.java:8)
    这个错误是什么意思
      

  4.   

    import java.awt.*;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.awt.event.*;public class Testa{
    public static void main(String[] args){
    new MyFrame("draws");
    }
    }class MyFrame extends Frame{
    ArrayList<Point> points = new ArrayList<Point>();
    public MyFrame(String s){
    super(s);
    setBounds(50, 50,300, 300);
    setBackground(Color.BLACK);
    //setLayout(null);

    addMouseListener( new MouseAchieve());
    addWindowListener(new WindowAdapter(){
    public void windowClosed(WindowEvent e) {
    System.exit(0);
    }

    });
    setVisible(true);


    }

    public void paint(Graphics g){
    Iterator<Point> i = points.iterator();
    while(i.hasNext()){

    g.setColor(Color.BLUE);
    g.fillOval(i.next().x, i.next().y, 10, 10);
    }

    }

    public void addPoint(Point p){
     points.add(p);
    }


    class MouseAchieve extends MouseAdapter{ public void mousePressed(MouseEvent e) {
    MyFrame mf =(MyFrame) e.getSource();
    Point p = new Point(e.getX(),e.getY());
    mf.addPoint(p);

    mf.repaint();
    }


    }
    }
    运行出错:哪里错了。高手指点
    Exception in thread "main" java.lang.NoSuchMethodError: calculateSecurityWarningPosition
    at java.awt.Window.initIDs(Native Method)
    at java.awt.Window.<clinit>(Unknown Source)
    at Testa.main(Testa.java:8)
      

  5.   

    NoSuchMethodError: calculateSecurityWarningPosition 没这个方法
      

  6.   

    程序能运行,但是有一堆的警示:
    Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
    at java.util.AbstractList$Itr.next(Unknown Source)
    ......好像窗口的关闭也不行...
    至于什么原因,我也想知道...
      

  7.   

    在FrameTest添加一个setLayout(new FlowLayout());
    应该就可以看到那个楼主要的布局吧
      

  8.   

    不是布局的问题。布局就算不加。也有默认的布局的。你们拷贝下代码试试。再填个布局看看可以运行吗?如果可以运行,则是我windows 底层可能出了问题。
    谢谢大家哦
      

  9.   

    这个可以:
    import java.awt.*; 
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;public class Testa{  public static void main(String[] args ){ 
    Testa te = new Testa(); 
    te.Inner(); 
    Testa.FrameTest  ft = te.new FrameTest(); 
    }  public FrameTest Inner(){ 
    return new FrameTest(); 

    private class FrameTest extends Frame{ 
    public  FrameTest(){ 
            setLocation(400, 200);
        TextField tf1 = new TextField(); 
    TextField tf2 = new TextField(); 
    TextField tf3 = new TextField(); 

    Label la1 =new Label("+"); 
    Button b = new Button("="); 

    Panel panel = new Panel(new GridLayout(1, 5));
    panel.add(tf1, "Center"); 
    panel.add(la1, "Center"); 
    panel.add(tf2, "Center"); 
    panel.add(b, "Center"); 
    panel.add(tf3, "Center"); 

    add(panel);
    pack(); 
    setVisible(true); 
    // 注册窗体关闭事件
            addWindowListener(new WindowAdapter() {
                public void windowClosing(WindowEvent e) {
                    System.exit(0);
                }
            });


    }
      

  10.   

    1.windowClosed(WindowEvent e) 
              当窗口已被关闭时调用。 
     void windowClosing(WindowEvent e) 
              窗口正处在关闭过程中时调用。 
    所以关闭窗口时closing方法而不是closed2.你的public void paint(Graphics g){ 
    Iterator <Point> i = points.iterator(); 
    while(i.hasNext()){ g.setColor(Color.BLUE); 
    g.fillOval(i.next().x, i.next().y, 10, 10); 

    中迭代器工作不正常,你debug一下,会发现points.iterator().hasNext()为true;而i.hasNext()是false,用points.iterator()代替会显示出绘制的图,现象太过诡异,不好解释,个人猜想,是因为
    public void repaint()重绘此组件。 如果此组件是轻量级组件,则此方法会尽快调用此组件的 paint 方法。否则此方法会尽快调用此组件的 update 方法,
    public void paint(Graphics g)绘制容器。该方法将 paint 转发给任意一个此容器子组件的轻量级组件。如果重新实现此方法,那么应该调用 super.paint(g) 方法,从而可以正确地呈现轻量级组件。如果通过 g 中的当前剪切设置完全剪切某个子组件,则不会将 paint() 转发给这个子组件。
    调用中出的问题吧,望高人指点,怎么迭代器的不正常工作现象。
      

  11.   

    我知道问题了,上面猜的有点假Iterator <Point> i = points.iterator(); 
    while(i.hasNext()){ g.setColor(Color.BLUE); 
    g.fillOval(i.next().x, i.next().y, 10, 10); 

    g.fillOval(i.next().x, i.next().y, 10, 10); 你用了2次next(),第一次可以,第二次的next()很有可能就越界了,应该改成
    point p = i.next();
    g.fillOval(p.x, p.y, 10, 10);
    罪过罪过