drawRect Frage und Aufgabenstellung

Blackjack

Mitglied
Hi Leute ich bin der Ali und neu Hier. Die ganzen Tage habe ich versucht die Aufgabe des Profs zu lösen aber ohne erfolg:

Daher würde ich euch das gerne mal fragen vltt könnt Ihr mir ja helfen:)

Aufgaben Stellung

Ergänzen Sie die paint-Methode der Klasse HelloGUI so, dass die Zeile Hello World ! eingerahmt ist.
Benutzen Sie dazu die Methode drawRect der Klasse Graphics in Analogie zur Methode drawString (s.
Klassenbibliothek für Details).

Der Code vom Prof:

Java:
HelloGUI.java
import java.awt.*;
import javax.swing.*;
public class HelloGUI extends JFrame {
  public HelloGUI (String title) {
    super(title);
    getContentPane().add("North",new JButton("Hello World"));
    setSize(300,200);
    setVisible(true);
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }
  public void paint (Graphics g) {
    g.drawString("Hello World!",100,100);
  }
  public static void main(String args[]) {
    new HelloGUI("Hello World ");
  }
}

und das was ich gemacht habe

Java:
import java.awt.*;
import javax.swing.*;
public class HelloGUI extends JFrame {
  public HelloGUI (String title) {
    super(title);
    getContentPane().add("North",new JButton("Hello World"));
    setSize(300,200);
    setVisible(true);
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
  }
  public void paint (Graphics g) {
    g.setColor(Color.red);
    g.drawString("Hello World!",100,100);
    g.drawRect(100,100);
  }
    
  public static void main(String args[]) {
    new HelloGUI("Hello World ");
  }
}


habe es auch schon mit public void drawRect ( int x,int y, int w und int h) probiert
 
Zuletzt bearbeitet von einem Moderator:

Enceladus271

Bekanntes Mitglied
Wenn du bei drawRect 4 int-Werte als Parameter eingibst funktionierts ja. Also ist dein Problem das du nicht weißt welche Werte du eingeben musst das der Rahmen an der richtigen Position ist?

Zu bedenken ist dass in Java
1. die y-Achse nach unten zeigt.
2. der Punkt (0/0) oben links ist

Aus der Javadoc zu drawRect ergibt sich das der Punkt (x/y) auch die linke obere Ecke des Rechtecks definiert.

Wenn man das alles beachtet sollte man zu einer korrekten Lösung kommen.
 

Gucky

Top Contributor
Für die Zukunft nach dem Prof: Du solltest paintComponent überschreiben und nicht paint. ;)
 
Zuletzt bearbeitet:

Blackjack

Mitglied
ja aber genau die Possition genau zu finden ist schwer und zudem wird dir Makierung leider unter dem Button gemacht und nicht auf dem Button von der aufgabe

als erstes öffnet sich ja das fenster der Button Hello World ist nicht sichtbar erst wenn man mit der Maus rauffährt

und der hintergrund von mein Desktop wird genommen wenn sich das Fenster auch unter Java Edirot usw öffnet

danke nochmal für die ersten antworten
 

Enceladus271

Bekanntes Mitglied
Füg mal folgende Zeile am Anfang der paint Methode hinzu:
super.paint( g );

Und das mit der Position der Rechtecks: Die (x/y) Position bei drawString ist übrigens die linke untere Ecke vom String (also anders als bei drawRect). Einfach nochmal selber versuchen. Ich könnte dir natürlich die Lösung posten, aber damit ist dir auch nicht wirklich geholfen.
 

Tom299

Bekanntes Mitglied
Ich hab auch mal ein bischen damit rumgespielt:

Code:
	public void paint (Graphics g) {
	    super.paint(g);
	    g.setColor(Color.red);		
	    g.drawString("Hello World!",100,100);
	    Rectangle2D rect = g.getFontMetrics().getStringBounds("Hello World!", g);
	    System.out.println(rect);
	    g.setColor(Color.blue);
	    g.drawRect(98, (int)(100 + rect.getY()), (int)rect.getWidth() + 2, (int)rect.getHeight());
	}

- Mit den FontMetrics kannst du die ungefähre Größe des Textes ausrechnen lassen. Ich hab dann rechts und links 2 Pixel von den 100 abgezogen, das sieht etwas besser.

- Allerdings hab ich bemerkt, daß die paint-Methode nur beim Start aufgerufen wird. Wenn ich das Frame kurz in den Hintergrund lege und dann wieder in den Vordergrund bringe, ist nur noch der JButton zu sehen, die paint-Methode wird nicht mehr aufgerufen
 

Gucky

Top Contributor
Das liegt daran, dass du noch mit einer Gameloop (Thread, Timer) repaint() aufrufen musst.
Ich habe aber nur Erfahrung mit paintComponent, da das eigentlich in Swing überschrieben werden sollte.
 

Tom299

Bekanntes Mitglied
Ich hab den Code auch mal in paintComponent() geschrieben, da passiert dann aber gar nichts. Wenn ich dem JButton einen ActionListener zuweise und dann paint() aufrufe, funktionierts (was auch einen Sinn für den Button ergeben würde)
 

Gucky

Top Contributor
Das liegt daran, das paint nur aufgerufen wird, wenn sich etwas ändert (z.B. die Größe). Deshalb musst du repaint in einem Thread aufrufen.
 

Enceladus271

Bekanntes Mitglied
paintComponent gehört zur Klasse JComponent. Da JFrame keine JComponent ist kann diese Methode auch nicht überschrieben werden. Daher ist es hier korrekt paint zu überschreiben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Methode Draw3DRect und DrawRect AWT, Swing, JavaFX & SWT 2
E Frage zum Schieberegler JSlider AWT, Swing, JavaFX & SWT 5
thor_norsk Java - Allgemeine - Frage AWT, Swing, JavaFX & SWT 14
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 10
M Frage zu Java Bundesligaverwaltung AWT, Swing, JavaFX & SWT 7
thor_norsk Allgemeine Frage AWT, Swing, JavaFX & SWT 9
E Frage zum Textfeld AWT, Swing, JavaFX & SWT 8
H Swing JMenu aufgeklappt oder nicht - Wie frage ich das ab? AWT, Swing, JavaFX & SWT 5
pkm Frage wegen java.lang.IllegalStateException bei DocumentListener AWT, Swing, JavaFX & SWT 4
D Frage zu ActionListenern und AvtionEvents AWT, Swing, JavaFX & SWT 2
ralfb1105 JavaFX Daten zwischen Controllern austauschen- neue Frage AWT, Swing, JavaFX & SWT 7
F JavaFX Frage zum Logging AWT, Swing, JavaFX & SWT 6
E Prinzip: wie man Ereignisse in einer GUI verarbeit. Frage zum Design? AWT, Swing, JavaFX & SWT 10
ralfb1105 Swing Frage zu SwingWorker Verhalten bei cancel() AWT, Swing, JavaFX & SWT 2
J Frage zu setuserdata AWT, Swing, JavaFX & SWT 1
N Frage zu ListView AWT, Swing, JavaFX & SWT 11
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Frage zu GUI - Button soll Objekt erfassen AWT, Swing, JavaFX & SWT 2
J Event Handling Frage zu der Funktion addActionListener AWT, Swing, JavaFX & SWT 2
J Frage zur objektorentierten Swing Programmierung AWT, Swing, JavaFX & SWT 10
T JavaFX Frage zum FX-Loader AWT, Swing, JavaFX & SWT 3
fLooojava GridLayout - Frage bezüglich Kachelgröße AWT, Swing, JavaFX & SWT 5
S Frage zu java.awt.EventQueue AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
M Swing Grundlegende Frage zu SWING mit WindowBuilder AWT, Swing, JavaFX & SWT 11
M Frage zum Loggen von Fehlern AWT, Swing, JavaFX & SWT 3
T Swing API Frage zu Verzeichnisbäumen und JTree AWT, Swing, JavaFX & SWT 1
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q Cursor Frage AWT, Swing, JavaFX & SWT 8
W JavaFX TableView frage AWT, Swing, JavaFX & SWT 5
H Taschenrechnerprojekt in Javafx - Frage zu den Buttons in FXML AWT, Swing, JavaFX & SWT 1
I Grundsätzliche Frage zu ItemListener AWT, Swing, JavaFX & SWT 11
X Kurze Frage zu JPopup AWT, Swing, JavaFX & SWT 3
D Swing [Frage] ComboBox + Label AWT, Swing, JavaFX & SWT 3
D Frage zu JFrame und Graphics AWT, Swing, JavaFX & SWT 4
J Swing Frage zur Vorgehensweise (JTable?, JLabels?) AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
kaoZ Frage zum einfügen von Componenten AWT, Swing, JavaFX & SWT 14
N Swing JTable anfänger frage AWT, Swing, JavaFX & SWT 2
S GridBagLayout-Frage AWT, Swing, JavaFX & SWT 1
V 2D-Grafik Frage zum Graphics Objekt AWT, Swing, JavaFX & SWT 2
F Swing JComboBox - Frage zur Größe AWT, Swing, JavaFX & SWT 11
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
D MVC Frage AWT, Swing, JavaFX & SWT 6
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
GianaSisters 2D-Grafik BufferedImage.getSubimage - Frage AWT, Swing, JavaFX & SWT 7
M Frage zu KeyListener bzgl. JApplet AWT, Swing, JavaFX & SWT 3
M Frage zu Threads AWT, Swing, JavaFX & SWT 3
N Swing JComboBox Frage AWT, Swing, JavaFX & SWT 5
Luk10 g.drawString funktioniert nicht + Frage zur Text-Rendering Qualität AWT, Swing, JavaFX & SWT 7
Luk10 Frage zu Farb-Komposition AWT, Swing, JavaFX & SWT 9
K Gui Layout Frage AWT, Swing, JavaFX & SWT 5
V SWT Import Wizard - frage zur WizardPage AWT, Swing, JavaFX & SWT 5
N Swing Frage JXMapviewer AWT, Swing, JavaFX & SWT 4
GUI-Programmer Wieder ne Layout Frage AWT, Swing, JavaFX & SWT 11
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
H Frage zu übergebenem Vector bzw. Boolean AWT, Swing, JavaFX & SWT 3
C 2D-Grafik BufferedImage laden, Frage zum Code AWT, Swing, JavaFX & SWT 2
VfL_Freak Swing Frage zu "new JPasswordField( 10 )" AWT, Swing, JavaFX & SWT 6
H Frage zu WindowBuilder Pro AWT, Swing, JavaFX & SWT 3
C Frage/Problem mit Jpanel AWT, Swing, JavaFX & SWT 4
S Frage zu TextArea AWT, Swing, JavaFX & SWT 2
GUI-Programmer Zeichnen in Swing - Frage AWT, Swing, JavaFX & SWT 6
Luk10 Frage zu Mouseevents AWT, Swing, JavaFX & SWT 7
J Refreshing Swing Frage AWT, Swing, JavaFX & SWT 10
F Frage zu Event KeyTyped bei jPanel AWT, Swing, JavaFX & SWT 4
A Frage zu StringBuilder AWT, Swing, JavaFX & SWT 2
S allg. Frage zur GUI-Architektur AWT, Swing, JavaFX & SWT 5
A Frage zu JDialog AWT, Swing, JavaFX & SWT 3
A Frage zur Methode matches() AWT, Swing, JavaFX & SWT 2
P LayoutManager Verständnis-Frage GridBagLayout AWT, Swing, JavaFX & SWT 7
H Allgemeine Frage zu Grafikfähigkeiten von Java AWT, Swing, JavaFX & SWT 24
D Repaint Frage, Design Frage AWT, Swing, JavaFX & SWT 2
Jats Frage zu JLabel & JTextField AWT, Swing, JavaFX & SWT 4
Y frage zu BufferedImage AWT, Swing, JavaFX & SWT 7
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
P Swing Frage zu paintComponent/getGraphics AWT, Swing, JavaFX & SWT 4
M Frage nach Swing Element AWT, Swing, JavaFX & SWT 3
S Frage zu Graphics2D AWT, Swing, JavaFX & SWT 3
T AWT Frage zu AWT AWT, Swing, JavaFX & SWT 5
B Frage zu Swing,Threads, SwingWorker und Socket Communikation AWT, Swing, JavaFX & SWT 4
F unspezifizierte Frage zu JTable/ Model AWT, Swing, JavaFX & SWT 6
B SWT Frage zu MVC und Data-Binding AWT, Swing, JavaFX & SWT 8
T LookAndFeel Look and Feel Frage AWT, Swing, JavaFX & SWT 2
J Java2D Kreis/Kurven Frage AWT, Swing, JavaFX & SWT 2
P Kurze Frage zur Gestaltung eines vertikalen Menüs AWT, Swing, JavaFX & SWT 2
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
Eldorado Frage zur Anwendung des MVC-Konzept AWT, Swing, JavaFX & SWT 33
G Frage zu processMouseEvent AWT, Swing, JavaFX & SWT 6
M Zoomen in ein JPanel... und eine andere kleine Frage AWT, Swing, JavaFX & SWT 3
D Swing implementierungs-technische Frage zu JList/AbstractListModel AWT, Swing, JavaFX & SWT 7
C Event Frage AWT, Swing, JavaFX & SWT 7
A Frage zu GridLayout AWT, Swing, JavaFX & SWT 4
F Frage zu WindowListeners AWT, Swing, JavaFX & SWT 2
E einfache Frage:warum ist Hintergrund grau ? AWT, Swing, JavaFX & SWT 24
E einfache Frage zu paintComponent und Graphics AWT, Swing, JavaFX & SWT 7
C Frage zu ActionListenern AWT, Swing, JavaFX & SWT 7
D Frage @ someActionEvent.getActionCommand() AWT, Swing, JavaFX & SWT 2
Kr0e Allgemeine Frage zu Java2D (Eigene Impl.) AWT, Swing, JavaFX & SWT 18

Ähnliche Java Themen

Neue Themen


Oben