2012-04-13 4 views
-1

가능한 중복 입력을받지 :
Im not sure how to get the data from my text field페이지 새로 고침하지 않거나 내 텍스트 필드에서

내가 텍스트 필드에 숫자를 입력하고를하고을 변경하려면 해당 입력을 사용하여 int는 사각형의 크기를 변경합니다. Im은 잘못된 것이 있는지, 어떤 텍스트 필드에서 해당 데이터를 가져 오지 않았는지 또는 페이지가 해당 데이터를 가져온 후에 다시로드되지 않는지 여부를 확인합니다. 당신은

JTextField textField=new JTextField(); 
새 로컬 변수를 만드는 주요 방법

하지만 글로벌 JTextField textField;을하고

import java.awt.*; 
import java.awt.event.*; 
import java.awt.image.*; 
import java.io.*; 
import javax.imageio.*; 
import javax.swing.*; 
import java.net.*; 
import java.sql.*; 
import java.lang.Object; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 


public class Test extends JPanel implements ActionListener{ 

    JTextField textField; 
    JFrame f=new JFrame(); 
    int x=77, y=441, w=23, h=10, entry; 
    BufferedImage img=null; 

    // BufferedImage img; 

    public static void main(String[] args) { 
     BufferedImage img =new BufferedImage(100, 50,BufferedImage.TYPE_INT_ARGB); 
     //textField = new JTextField(); 
     JFrame f = new JFrame("Load Image Sample"); 
     JTextField textField=new JTextField(); 
     f.add(textField); 
     textField.setBounds(10,10,40,30); 
     textField.setVisible(true); 

     f.addWindowListener(new WindowAdapter(){ 
       public void windowClosing(WindowEvent e) { 
        System.exit(0); 
       } 
      }); 

     f.add(new Test()); 
     f.pack(); 
     f.setVisible(true); 
    } 


    public void paintComponent(Graphics g) { 
     g.drawImage(img, 0, 0, null); 

     Graphics2D i = img.createGraphics(); 
     Color myColor = Color.decode("#32004b"); 
     i.setColor(myColor); 
     i.fillRect(x,y,w,h); 

      // g.fillRect(10,10,10,10); 
    } 

    public Test() { 

     try { 
      img = ImageIO.read(new File("sales-goal.png")); 
     } catch (IOException e) {} 


       //77,441,23,10 
    } 

    public Dimension getPreferredSize() { 
     if (img == null) { 
      return new Dimension(100,100); 
     } else { 
      //return new Dimension(img.getWidth(null), img.getHeight(null)); 
      return new Dimension(300,600); 
     } 
    } 

    public void actionPerformed(ActionEvent e) { 

     Graphics g= getGraphics(); 
     textField.addActionListener(this); 

       if (e.getSource() == textField) { 
        entry= Integer.parseInt(textField.getText()); 
        g.drawString("Test",50,50); 

        entry=h; 

       }   
    } 
} 

답변

1

할당되지 않습니다. 귀하의 actionPerformed에서 초기화되지 않은 textField을 사용 중입니다.

나는 당신의 주요 방법이 줄을 대체 할
+0

 textField = new JTextField(); 

로 사용합니다. 그러나 당신의 요점은 또한 확실히 유효합니다. – gnomed

+0

메인에 내 전역 텍스트 필드를 사용하는 방법 – user1329836

+0

모든 초기화를 정적 메인에 넣으므로 전역 (인스턴스) 변수에 액세스 할 수 없습니다. JFrame 클래스를 별도로 확장하여 인스턴스 변수를 사용할 수 있도록 제안합니다. – evanwong

0

: 다음으로

JTextField textField=new JTextField(); 

:

textField.addActionListener(this); 
+0

필자는 그것을 시도했지만, 비 정적 텍스트 필드 참조 정적 컨텍스트 양식 – user1329836

+0

그런 다음 고정시킵니다. 솔직히 나는이 혼란을 많이 없애기 위해 JPanel 내부에 주요 메소드를 넣지 않겠지 만, 프로그램 시작시 항상 변수를 정적으로 선언 할 수 있습니다. 'JTextField textField;를'static JTextField textField; '로 대체하십시오. – gnomed

+0

또한 스윙 튜토리얼을 추천합니다. 내 첫 번째 스윙 GUI는 무서웠으며 내 설계에 자신감이 생길 때까지 나이가 들었다. 지루할 것 같은데, 배우는 유일한 방법은 그것을하는 것인데, 튜토리얼은 큰 도움이됩니다. 그러나 앞으로 GUI 개발을 많이 할 계획이 없다면 해킹 된 솔루션을 통해 얻을 수 있습니다 (제대로 작동하는 한). – gnomed

1

선언 :

textField=new JTextField(); 
textField.addActionListener(this); 

가 그럼 난 당신의 actionPerformed 방법에서이 줄을 제거 할 것 변수는

 private static JTextField textField; 

제거 'JTextField를'그리고 그들은 또한 올바른 위치에 액션 청취자를 할당 할 나타나지 않습니다 주요 방법

관련 문제