2012-04-13 46 views
0

我想从我的文本字段获取数据并将其设置为int h。并改变矩形即时图的大小,但我不知道如何去从文本字段获取数据,我厌倦了在actionperfomred中使用e.getsource,但它无法找到我的文本字段。我的代码如下:我不知道如何从我的文本字段获取数据

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; 

/** 
* This class demonstrates how to load an Image from an external file 
*/ 
public class test extends Component { 

    int x=77, y=441, w=23, h=10; 

    BufferedImage img = 
    new BufferedImage(100, 50, 
        BufferedImage.TYPE_INT_ARGB);  
    // BufferedImage img; 

    public void paint(Graphics g) { 
     g.drawImage(img, 0, 0, null); 
      // g.fillRect(10,10,10,10); 
    } 

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


     Graphics2D g = img.createGraphics(); 
     Color myColor = Color.decode("#32004b"); 
     g.setColor(myColor); 
     g.fillRect(x,y,w,h); 
       //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 static void main(String[] args) { 

     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 actionPerformed(ActionEvent e) { 
       // if (e.getSource() == textField) {} 

    } 
} 
+0

这是一个很好的问题:http://codereview.stackexchange.com/ – 2012-04-13 17:33:59

+0

不要AWT('Component')成分混合摆动('JFrame')。 'test'类应该扩展'JPanel'(并且应该正确地将其大写为'Test')。它需要重写'paintComponent()'而不是'paint()'。 – 2012-04-13 17:49:52

+0

这样做,我仍然不知道如何通过操作执行主要获取数据。 – user1329836 2012-04-13 18:33:33

回答

1

变量textField是本地main。如果您想从actionPerformed访问它,则需要将其更改为实例变量。

+0

我该如何让它成为一个实例变量,然后我如何将它添加到j框架,因为这也是主要框架。我应该把主要的东西都搬走吗? – user1329836 2012-04-13 18:31:34

1

是的。我同意@jpm。您需要将其声明为实例变量。 执行以下操作: -

public class test extends Component { 
     //Declare the variable here. 
     private static JTextField textfield; 

    public static void main(String[] args) { 
     //Whenever you use the textfield use like this. Remove the keyword 'JTextField'. 
     textfield = new JTextField(); 
    } 
    } 
+0

我这样做了,并将其添加到我的actionperformed中,但是我没有获取数据public void actionPerformed(ActionEvent e){g 0}图G = getGraphics(); (e.getSource()== textField){ entry = Integer.parseInt(textField.getText()); g.drawString(“Test”,50,50); entry = h; } – user1329836 2012-04-13 18:59:11

+0

我不明白你在说什么。简要解释。 – 2012-04-13 19:10:56

+0

检查您是否使用了相同的变量名称:private JTextField textField;和textField = new JTextField(); – 2012-04-13 19:19:55

相关问题