2012-04-13 10 views
0

Mein Textfeld wird nicht zu meinem Jframe hinzugefügt. Ich möchte dieses Textfeld zur Verfügung haben, damit ich es verwenden kann, um die Höhe eines Rechtecks ​​im Zeichen in Farbe zu ändern. In actionperfomred im Versuch, den Wert aus dem Feld zu bekommen und hoffentlich wird es das Bild mit dem richtigen WertTextField nicht zu jFrame hinzufügen

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; 

       } 

    } 
} 
+1

Doppelte von [Ich bin nicht sicher, wie man die Daten aus meinem Textfeld] (http://stackoverflow.com/questions/10145493/im-not-sure-how-to-get-the- data-from-my-text-field) – trashgod

+0

zufällige Kommentare: a) du _must_ call super in paintComponent b) es gibt zwei JFrames c) die Rückgabe einer hardcoded Größe in getPref macht keinen Sinn (zu ich;), die kommentierte Zeile ist der Weg zu gehen d) nie benutzen Sie getGraphics e) nie verwenden Sie setBounds f) warum malen Sie auf die Grafik des Bildes ... zusammenfassend (und keine Beleidigung gemeint): Ihre Code ist ein Durcheinander. Ich würde vorschlagen, dass Sie einen Schritt zurück machen und auf den ersten Seiten Ihres Lehrbuchs neu beginnen – kleopatra

Antwort

2

ich, es würde annehmen, neu streichen, weil Sie nie rufen Sie die Methode init

rufen
2

Ihre init-Methode und Sie werden in Ordnung sein