2017-02-07 3 views
0

Ich möchte benutzerdefinierte Text auf Bild, wie wenn ich zwei Textfelder machen, eins ist für Name und Sekunde für Datum, also wenn ich jemandes Name und Datum eingeben, nach der Eingabe, wenn ich auf OK geklickt habe, dann wird es Anzeige in diesem Bild.Wie setze ich benutzerdefinierten Text auf ein Bild?

import java.awt.Dimension; 
import java.awt.Graphics; 
import java.awt.Image; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class billFrame extends JFrame 
{ 
    public billFrame() 
    { 
     JFrame f1 = new JFrame("Billng Application"); 
     f1.setDefaultCloseOperation(EXIT_ON_CLOSE); 
     f1.setSize(500,500); 
     f1.setBounds(30, 50, 500, 700); 
     f1.setExtendedState(JFrame.MAXIMIZED_BOTH); 

     ImageIcon icon = new 
     ImageIcon("C:\\Users\\Dhaval\\Downloads\\shrihari.png"); 
     Image image = icon.getImage(); 
     JPanel panel1; 
     panel1 = new JPanel() 
     { 
      @Override 
      protected void paintComponent(Graphics g) 
      { 
       super.paintComponent(g); 
       g.drawImage(image, 1400, 0, 500, 700, this); 
      } 

      @Override 
      public Dimension getPreferredSize() 
      { 
       return new Dimension(320, 200); 
      } 
     }; 
     f1.add(panel1); 
     panel1.setVisible(true); 
     panel1.setLayout(null); 

     JLabel name = new JLabel("Name :"); 
     name.setVisible(true); 
     name.setLocation(100,100); 
     name.setSize(100,100); 
     panel1.add(name); 

     JTextField namet = new JTextField(); 
     namet.setVisible(true); 
     namet.setLocation(150, 137); 
     namet.setSize(200,30); 
     panel1.add(namet); 
     f1.setVisible(true); 
    } 
    @SuppressWarnings("unchecked")        
    public static void main(String args[]) 
    { 
     billFrame bf = new billFrame(); 
    }     
} 
+0

1) 'panel1.setLayout (null);' Java GUIs müssen auf verschiedenen Betriebssystemen ', Bildschirmgröße, Bildschirmauflösung usw. mit verschiedenen PLAFs in verschiedenen Locales arbeiten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). 2) Bitte lerne die gängige Java-Nomenklatur (Namenskonventionen - z.B. 'EachWordUpperCaseClass',' firstWordLowerCaseMethod() ',' firstWordLowerCaseAttribute', es sei denn, –

+0

.. es ist ein 'UPPER_CASE_CONSTANT') und benutze es konsistent. 3) Eine Möglichkeit, Bilder für ein Beispiel zu erhalten, besteht darin, eine direkte Verknüpfung zu Bildern herzustellen, die in [dieses Q & A] (http://stackoverflow.com/q/19209650/418556) zu sehen sind. 4) Anwendungsressourcen werden zum Zeitpunkt der Bereitstellung zu eingebetteten Ressourcen. Daher ist es ratsam, sofort auf sie zuzugreifen, als ob sie gerade wären. Auf ein [tag: embedded-resource] muss nicht die Datei, sondern die URL zugreifen. Siehe [Info. Seite für eingebettete Ressource] (http://stackoverflow.com/tags/embedded-resource/info) zum Erstellen der URL. –

Antwort

2

Hier ist Beispiel:

static void addTextWatermark(String text, File sourceImageFile, File destImageFile) { 
try { 
    BufferedImage sourceImage = ImageIO.read(sourceImageFile); 
    Graphics2D g2d = (Graphics2D) sourceImage.getGraphics(); 

    // initializes necessary graphic properties 
    AlphaComposite alphaChannel = AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.1f); 
    g2d.setComposite(alphaChannel); 
    g2d.setColor(Color.BLUE); 
    g2d.setFont(new Font("Arial", Font.BOLD, 64)); 
    FontMetrics fontMetrics = g2d.getFontMetrics(); 
    Rectangle2D rect = fontMetrics.getStringBounds(text, g2d); 

    // calculates the coordinate where the String is painted 
    int centerX = (sourceImage.getWidth() - (int) rect.getWidth())/2; 
    int centerY = sourceImage.getHeight()/2; 

    // paints the textual watermark 
    g2d.drawString(text, centerX, centerY); 

    ImageIO.write(sourceImage, "png", destImageFile); 
    g2d.dispose(); 

    System.out.println("The tex watermark is added to the image."); 

} catch (IOException ex) { 
    System.err.println(ex); 
} 
} 

Und hier ist die Nutzung

File sourceImageFile = new  File("name.png"); 
File destImageFile = new File("anothername.png"); 
addTextWatermark("Text", sourceImageFile, destImageFile); 

oder Sie können uns Libs dafür. Zum Beispiel: http://www.gif4j.com

+0

Ich möchte kein Wasserzeichen ... lesen Sie zuerst die Frage richtig und dann antworten Sie – dhvl5

+0

Also, entfernen Sie die Alp-Komponente aus der Farbe & der Zeile 'System.out.println (" Das Tex-Wasserzeichen wird dem Bild hinzugefügt. ");' & der Job ist erledigt! Erwarten Sie nicht, dass Sie hier genau die richtigen Lösungen finden, dies ist kein Helpdesk (AKA 'Batterien nicht enthalten'). BTW - Ich habe gewartet, um zu sehen, ob Sie den Sinn hatten, auf meine Kommentare zu antworten, aber Sie ignorieren mich anscheinend, also schließe ich diesen Tab jetzt in meinem Browser. –

Verwandte Themen