drawString

Status
Nicht offen für weitere Antworten.

T!b3r!|_|$

Mitglied
:lol: heute :lol: ist mein Problem, dass ich in meiner klasse zwar eine Methode paint(Graphics g) deklariert habe, aber bei programmstart erscheint in dem Fenster kein Text. Wieso? hier mal der code

Code:
/**
 * Write a description of class blackJack_grafik here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
  
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class blackJack_grafik  
{
  
    JMenuBar mbar = new JMenuBar();
    JMenu Datei = new JMenu("Datei");
    JMenu Hilfe = new JMenu("?");
    JMenuItem nSpiel = new JMenuItem("Neues Spiel");
    JMenuItem options = new JMenuItem("Optionen");
    JMenuItem close = new JMenuItem("Beenden");
    JMenuItem about = new JMenuItem("About");
    JMenuItem help = new JMenuItem("Hilfe");
    
    public blackJack_grafik(int x, int y)
    {
      
      
      Listener listener = new Listener();
      close.addActionListener(listener);
      options.addActionListener(listener);
      about.addActionListener(listener);
      
      JFrame f1 = new JFrame("Black Jack");
      f1.setSize( x, y );
      f1.setResizable( true );
      f1.setJMenuBar(mbar);
      f1.getContentPane().setBackground(Color.green);
      f1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      mbar.add(Datei);
      mbar.add(Hilfe);      
      Datei.add(nSpiel);
      Datei.add(options);
      Datei.add(close);
      Hilfe.add(about);
      Hilfe.add(help);
      f1.setVisible(true);
}

public static void paint(Graphics g)  //Diese Methode sollte doch eigentlich im Frame "Name" hinschreiben!!!
{                                                   //Diese Methode sollte doch eigentlich im Frame "Name" hinschreiben!!!
                                                      //Diese Methode sollte doch eigentlich im Frame "Name" hinschreiben!!!
    g.drawString("Name", 100, 100);   //Diese Methode sollte doch eigentlich im Frame "Name" hinschreiben!!!
}                                                   //Diese Methode sollte doch eigentlich im Frame "Name" hinschreiben!!!

private class Listener implements ActionListener{
    public void actionPerformed( ActionEvent e ){
       Object src = e.getSource(); 
       
       if(src == close)
       {
           System.exit(0);
       }
       if(src == about)
       {
            AboutWindow windowAbout = new AboutWindow();
       }
       if(src == options)
       {
           MenuOne menu_one = new MenuOne();
           menu_one.setVisible(true);
       }
       
       
       
    
}

}
}
 
R

Roar

Gast
nein, deine paint methode wird nie aufgerufen, weil sie niemand aufruft. die einzige paint methode die aufgerufen wird ist f1.paint();

btw : UGH!
1. wieso ist die paint methode statisch??? von der logik geht das schonmal gar nicht,
und 2. selbst wenn du damit versucht hättest die JFrame#paint methode zu überschreiben hätte das nicht funktioniert, da die ganz bestimmt nicht statisch ist ( oder was meinst du wie das wär wenn man mehrere JFrames in einer applikation hat?)
 

T!b3r!|_|$

Mitglied
danke, aber wie mache ich es dann, dass sie angezeigt wird und wie müsste ich es machen, wenn ich mehrere Frames hätte? dass es nur in einem gezeichnet wird?
 
B

Beni

Gast
Du musst eigentlich ein eigene Component schreiben die zeichnet.

Code:
public class BlackJackComponent extends JComponent{
  public void paintComponent( Graphics g ){
     ...
     g.drawString( ... );
  }
}

Und die dann später verwenden:
Code:
public class blackJack_grafik 
{
    ...
    private BlackJackComponent blackJack;  // hier speichern, damit man den Spieltisch später wieder findet
   
    public blackJack_grafik(int x, int y)
    {
      ...
      blackJack = new BlackJackComponent();
      f1.getContentPane().add( blackJack );

      ...
  }
}


Man könnte was ähnliches mit einem Frame machen, das wäre aber keine gute Lösung:
1. Weil die Menüs nicht mehr gezeichnet würden.
2. Weil eine Component auch mal an einer anderen Stelle (Dialog, Applet...) verwendet werden kann.

mfg Beni
 

T!b3r!|_|$

Mitglied
hey danke...das, dass das menü nicht mehr gezeichnet wird hab ich auch schon mitbekommen..hab aber keine ahnung wieso? kannst mir das sagen?

auf jeden Fall danke
 
B

Beni

Gast
Weil "paint" normalerweise das "paint" des Menüs aufrufen würde, wenn du "paint" jetzt aber überschreibst...
(Das Original-Paint macht noch einiges mehr. Deshalb sollte man es nur überschreiben, wenn man all das Zusatzzeugs nicht benötigt!)
 

T!b3r!|_|$

Mitglied
scheiße--hab das gerade ausprobiert..geht aber noch immer nicht. hier mal der quelltext

Code:
/**
 * Write a description of class blackJack_grafik here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
  
import javax.swing.*;
import java.io.*;
import java.awt.*;
import java.awt.event.*;
public class blackJack_grafik  
{
  
    JMenuBar mbar = new JMenuBar();
    JMenu Datei = new JMenu("Datei");
    JMenu Hilfe = new JMenu("?");
    JMenuItem nSpiel = new JMenuItem("Neues Spiel");
    JMenuItem options = new JMenuItem("Optionen");
    JMenuItem close = new JMenuItem("Beenden");
    JMenuItem about = new JMenuItem("About");
    JMenuItem help = new JMenuItem("Hilfe");
    
    public blackJack_grafik(int x, int y)
    {
      
      
      Listener listener = new Listener();
      close.addActionListener(listener);
      options.addActionListener(listener);
      about.addActionListener(listener);
      
      JFrame f1 = new JFrame("Black Jack");
      f1.setSize( x, y );
      f1.setResizable( true );
      f1.setJMenuBar(mbar);
      f1.getContentPane().setBackground(Color.green);
      f1.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
      mbar.add(Datei);
      mbar.add(Hilfe);      
      Datei.add(nSpiel);
      Datei.add(options);
      Datei.add(close);
      Hilfe.add(about);
      Hilfe.add(help);
      blackJack_graphicComponent blackJack_graphiccomponent = new blackJack_graphicComponent();
      blackJack_graphicComponent.text = blackJack.PlayerName1;
      blackJack_graphicComponent.x = 100;
      blackJack_graphicComponent.y = 100;
      f1.getContentPane().add( blackJack_graphiccomponent );
      f1.setVisible(true);
}



private class Listener implements ActionListener{
    public void actionPerformed( ActionEvent e ){
       Object src = e.getSource(); 
       
       if(src == close)
       {
           System.exit(0);
       }
       if(src == about)
       {
            AboutWindow windowAbout = new AboutWindow();
       }
       if(src == options)
       {
           MenuOne menu_one = new MenuOne();
           menu_one.setVisible(true);
       }
       
       
       
    
}

}
}

Code:
/**
 * Write a description of class blackJack_graphicComponent here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
import javax.swing.*;
import java.awt.*;
public class blackJack_graphicComponent extends JComponent
{
static String text;
static int x;
static int y;

	public void paintComponent( Graphics g){
    g.drawString(text, x, y);
    }
}
 
B

Beni

Gast
öhms...

forum_013.png


...sieht doch gut aus.

Bist du sicher, dass du auch einen Text gesetzt hast?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C SWT autosize bei gc.drawString() auf einem Label AWT, Swing, JavaFX & SWT 7
M Graphics2D: drawString Berechnung AWT, Swing, JavaFX & SWT 1
X AWT Text der mit Graphics "drawString(...)" geschreiben wurde wieder löschen. AWT, Swing, JavaFX & SWT 6
M JFrame Graphics.drawString Problem AWT, Swing, JavaFX & SWT 11
P drawString in einem Rectangle AWT, Swing, JavaFX & SWT 4
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
C drawString wird beim starten des Programmes nicht ausgeführt AWT, Swing, JavaFX & SWT 3
B Graphics2d drawString mit double Werten? AWT, Swing, JavaFX & SWT 5
K Java DrawString zentriert und mehrzeilig AWT, Swing, JavaFX & SWT 8
R AWT drawString - Ausmaße AWT, Swing, JavaFX & SWT 4
F Browser drawString AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Html in drawString() AWT, Swing, JavaFX & SWT 2
A Formatierten String ausgeben (drawString) AWT, Swing, JavaFX & SWT 5
Zettelkasten drawString() Zeilenumbruch AWT, Swing, JavaFX & SWT 2
M breite eines "drawString()-Strings" AWT, Swing, JavaFX & SWT 2
T 2D-Grafik Blocksatz mit drawString() AWT, Swing, JavaFX & SWT 5
F AWT Probleme mit drawString() AWT, Swing, JavaFX & SWT 5
S drawString für HTML-Text? AWT, Swing, JavaFX & SWT 7
R drawString mit double Koordinaten AWT, Swing, JavaFX & SWT 5
D AWT drawString funktioniert nicht unter Linux AWT, Swing, JavaFX & SWT 7
G [gelöst] "Größe" von drawString AWT, Swing, JavaFX & SWT 4
spross line break bei drawString() mit LineBreakMeasurer? AWT, Swing, JavaFX & SWT 4
MasterEvil HTML formatierten Text mit drawString ? AWT, Swing, JavaFX & SWT 3
A Zentrieren von drawstring() in einem fillRect() AWT, Swing, JavaFX & SWT 3
m@nu Graphics: Per drawString() Text vertikal zentriert zeichnen AWT, Swing, JavaFX & SWT 5

Ähnliche Java Themen

Neue Themen


Oben