2013-07-26 71 views
2

我正在試圖用Swing和ACM交互器創建一個非常簡單的程序。它是從課堂講義中直接獲取的,但不能在我的電腦上運行。當我運行它時,它運行正常約半秒,然後短暫閃爍,重新加載,然後所有按鈕和文本字段功能都將丟失。下面的代碼:ACM交互器凍結

import acm.program.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class TextFieldExample extends ConsoleProgram { 

public void init() { 
    nameField = new JTextField(15); 
    add(new JLabel("Name: "), SOUTH); 
    add(nameField, SOUTH); 
    nameField.addActionListener(this); 
} 

public void actionPerformed(ActionEvent e) { 
    if (e.getSource() == nameField) { 
     println("Hello, " + nameField.getText()); 
    } 
} 

private JTextField nameField; 
} 

如果有幫助,我使用Java SE 1.6與Eclipse赫利俄斯服務版本2 2010年中期的Mac Pro上運行的Mac OSX 10.8.4

+0

嘗試的Java 5,建議在[此處](http://stackoverflow.com/q/12130335/230513)。 – trashgod

+0

我做了,但它沒有工作:( – yohanstra

回答

1

作爲一種變通方法,在除using Java 1.5之外,將該字段添加到NORTH。此外,您可能要延長GraphicsProgram

改性SSCCE:

import acm.program.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class TextFieldExample extends GraphicsProgram { 

    @Override 
    public void init() { 
     nameField = new JTextField(15); 
     add(new JLabel("Name: "), NORTH); 
     add(nameField, NORTH); 
     nameField.addActionListener(this); 
    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() == nameField) { 
      println("Hello, " + nameField.getText()); 
     } 
    } 
    private JTextField nameField; 
} 
+0

太好了,謝謝!現在完美地工作。 – yohanstra