2016-10-12 5 views
-5

Ich bin sehr neu in der Programmierung. Ich habe gerade angefangen und folge einem Buch namens Learning Java von Patrick Neimeyer und Daniel Leuck.So verwenden Sie die JComponent

Es begann mit der Aufforderung, die Hello World! Programm, und tat dies, indem Sie es in einem JFrame, die alle in einer Klasse gemacht wurde, es jetzt fragt mich zwei andere Klasse erstellen, in denen eine JComponent verwenden wird. Ich habe versucht, eine andere Klasse zu erstellen und bin gerade im Kreis mit Fehlern gelandet.

Dies ist mein vorheriger Versuch. Kann mir bitte jemand erklären, was ich tun soll ?! Ich weiß, dass es ziemlich einfach ist, aber ich kämpfe.

Es ist mir zu sagen, dass der neue Code für die Klasse ist:

import java.awt.*; 

class HelloComponent extends JComponent { 

    public void paintComponent(Graphics g) { 
     g.drawString("Hello, Java!", 125, 95); 
    } 
} 

Wo finde ich diese hinzufügen?

+0

** Hinweis **: Initialisieren Sie Ihre HelloComponent und damit in Ihrem JFrame. – Enzokie

+0

Beginnen Sie mit der Untersuchung einiger Beispielprogramme, die ** sehr ** einfach zu finden sind. –

+4

Wenn Sie heute mit dem Programmieren beginnen, frage ich mich, warum Sie sich schon mit UI-Dingen beschäftigen. Es scheint mir ein sehr schwieriger Start zu sein. Ich würde eher empfehlen, hier zu beginnen https://docs.oracle.com/javase/tutorial/ ... und die "Grundlagen" -Wege zu bearbeiten. – GhostCat

Antwort

0

Dies ist eine ziemlich verblüffende Art, mit der Programmierung in Java zu beginnen. Warum würden Sie in diesem Fall kein JLabel verwenden, anstatt eine eigene JComponent zu erstellen?

In jedem Fall, wie einige der Kommentare bereits gesagt haben, müssen Sie Ihre JComponent zu einem JFrame hinzufügen.

Ein Beispiel unter:

Beispiel JFrame Klasse Diese Klasse erweitert JFrame anstatte Schaffung und Erhaltung eines JFrame Objekt. Es enthält auch die Hauptmethode, nur um eine andere Klasse zu vermeiden. Die main-Methode führt die GUI im Ereignisversand-Thread aus. Dieser Teil ist wichtig, aber nicht so sehr für Anfänger.

import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 

public class ExampleFrame extends JFrame { 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       ExampleFrame frame = new ExampleFrame(); 
       frame.createAndShow(); 
      } 
     }); 
    } 

    public void createAndShow() { 
     getContentPane().add(new HelloComponent()); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setTitle("Hello World Example"); 
     pack(); 
     setVisible(true); 
    } 

} 

HelloComponent

Wie zuvor mit Ihrer Version, sondern setzt die bevorzugte Größe, so dass, wenn die JFrame es Größen auf die Komponente ‚verpackt‘ ist. Außerdem habe ich die Schrifthöhenmetrik Graphic verwendet, um die Y-Koordinate zu positionieren, da die drawString-Methode die Y-Koordinate unten links platziert.

import java.awt.Dimension; 
import java.awt.Graphics; 
import javax.swing.JComponent; 

public class HelloComponent extends JComponent { 

    private final int COMPONENT_WIDTH = 100; 
    private final int COMPONENT_HEIGHT = 30; 

    public HelloComponent() { 
     setPreferredSize(new Dimension(COMPONENT_WIDTH, COMPONENT_HEIGHT)); 
    } 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     g.drawString("Hello World", 0, g.getFontMetrics().getHeight()); 
    } 
}