Java 不向jFrame添加TextField

Java 不向jFrame添加TextField,java,swing,Java,Swing,我的文本字段没有添加到我的Jframe中,我希望此文本字段可用,以便我可以使用它更改绘制中矩形im图形的高度。在ActionPerfumred中,我试图从该字段中获取值,希望它能用正确的值重新绘制图像 import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; import javax.imageio.*; import javax.swing.*; import java.net.

我的文本字段没有添加到我的Jframe中,我希望此文本字段可用,以便我可以使用它更改绘制中矩形im图形的高度。在ActionPerfumred中,我试图从该字段中获取值,希望它能用正确的值重新绘制图像

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;

    public void init(){
        JTextField textField=new JTextField(); 
        f.add(textField);
        textField.setBounds(10,10,40,30);
        textField.setVisible(true);
        textField.addActionListener(this);
    }

   // 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");

       /*textField=new JTextField();
        textField.addActionListener(this);
        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();


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

                   entry=h;

                }

    }
}

我想这是因为你从来没有调用过init方法。我想这是因为你从来没有调用过init方法。调用init方法,你会没事的。调用init方法,你会没事的。重复随机注释:a)你必须在paintComponent中调用super b)有两个JFrames c)返回agetPref中的硬编码大小没有意义(对我来说;),注释行就是要走的路d)永远不要使用getGraphics e)永远不要使用收进框f)为什么要在图像的图形上绘制。。。总之(无意冒犯):你的代码一团糟。我建议你退一步,从你的文本书的第一页重新开始随机评论的复制:a)你必须在paintComponent中调用super b)有两个JFrames c)在getPref中返回硬编码大小没有意义(对我来说;),注释行是要走的路d)永远不要使用getGraphics e)永远不要使用setBounds f)为什么要在图像的图形上绘制。。。总之(无意冒犯):你的代码一团糟。我建议你退一步,从课本的第一页开始