Farbe in JFrame funktioniert nicht (Java)
So, in der Klasse machen wir ein Java-Programm. Wir werden versuchen, zu verwenden, die paint(Graphics g) - Funktion in den JFrame. Wir haben versucht, es in der Vergangenheit (Wochen), und es verwendet, um zu arbeiten. Aber jetzt ist es nicht (oder wir haben irgendwo einen Fehler gemacht). Wir haben auch versucht die paintComponent(Graphics g) aber nichts scheint zu funktionieren.
Hier ist unser code:
public class MainAc {
public static void main(String[] args) {
JFrame frame = new JFrame("Class Paint");
JButton button = new JButton("Click for more");
frame.setSize(800, 600);
frame.add(button);
frame.setLayout(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
button.setLayout(null);
button.setLocation(100,100);
button.setSize(200,100);
frame.setVisible(true);
}
public void paint(Graphics g){
g.drawString("Hello", 200, 50);
}
}
InformationsquelleAutor Dallox | 2012-10-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Also, was Sie dort tun, ist die Umsetzung eines
paint
Methode in Ihrem eigenenMainAc
Klasse, nicht dasJFrame
.Ihre
MainAc
Klasse selbst, abgeleitet wird, sollte von derJFrame
.Den code unten sollte funktionieren. Wenn Sie nicht verstehen, Vererbung, sollten Sie sich über Ihre Klasse Noten, es werden dort.
Behoben. Es gibt natürlich viel bessere Möglichkeiten, dies zu tun. Aber die Tatsache, dass OP scheint nicht besonders Fortgeschritten, macht, tut es der "richtige" Weg ein wenig weniger wichtig.
Dies scheint nicht zu funktionieren. Tryed, um die zu entfernen-Taste, um zu sehen, ob der button überschneidet sich aber nur dieses führte zu einem seltsamen Fenster.
Nevermind, die aktuelle Quelle arbeitet
Eine faire Sicht, natürlich sind Sie frei, fügen Sie ein mehr in die Tiefe zu beantworten, wenn Sie es wünschen.
InformationsquelleAutor Richard Taylor
Ihre Klasse erweitern nicht von jedem
Component
fähig MalereiHaben, Lesen Sie durch Performing Custom Painting weitere Ideen
Könnte man etwas machen wie:
Wo möglich, sollten Sie vermeiden, übergeordnete top-level-Containers
paint
Methoden, wenn für keinen anderen Grund, Sie sind nicht doppelt gepuffert.Sollten Sie auch versuchen und reichen von Swing basierten Komponenten aus dem gleichen Grund, wie beim vermischen von schwere und leichte Komponenten, die Probleme verursachen können, mit der Malerei.
InformationsquelleAutor MadProgrammer
Wie der code ist, sind Sie nur der Definition einer
paint
Methode in einer Klasse. Die Klasse erweitertObject
, so sind Sie nichtoverridding
Farbe aufJComponent
.Ihre Klasse erweitern müssen jede Unterklasse von
Component
oderComponent
sich um tatsächlich überschreibenpaint
oderpaintComponent
. In deinem FallMainAc
verlängern würdeJFrame
.Lesen Sie den gesamten Satz, "oder Unterklasse".
Punkt, die Bedeutung von Kommunikation ist definiert durch den Empfänger. Wenn das alles ist, ich nahm es an, stellen Sie sich vor, was der OP Holen aus ihm heraus. Es ist nitty wählerisch (tut mir Leid), aber ich möchte Sie ermutigen, sich zu re-Wort es leicht. Sie "könnten", technisch, reichen von der Komponente als auch 😉
Ist das besser?
Cheers, ich weiß, ich bin Schmerz, aber wenn wir nicht halten sich gegenseitig bis zu einem hohen standard, welche Hoffnungen gibt es für die Plakate 😉 - Sie bereits verdient ein +1 von mir, mit zu beginnen
InformationsquelleAutor Dan D.
Hier ist eine vereinfachte version von Sticky ' s code, das scheint zu funktionieren. Ich geändert es zu einem JApplet erweitern und verwenden die
init()
- Methode anstelle dermain()
.InformationsquelleAutor R. Gabriel