Frame ändert Farbe nicht

Kotelettklopfer

Bekanntes Mitglied
Hallo zusammen,

jemand eine Idee warum mein Frame nicht die Farbe anpasst?
Was mache ich hier falsch?

[CODE lang="java" highlight="24,25"]import javax.swing.*;
import java.awt.*;

public class InfoFrame extends JFrame {


static JLabel text;



public InfoFrame() {
setVisible(true);
setSize(300, 100);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Boss Info");
setResizable(false);
setLayout(null);




text = new JLabel();
setForeground(Color.BLUE);
setBackground(Color.BLACK);
text.setBounds(0, 15, 300, 20);
add(text);


}




public static void setStatus(String status) {
text.setText(status);
}
}

[/CODE]

So sieht das ganze dann aus
1622624555590.png
 
Zuletzt bearbeitet:

LimDul

Top Contributor
Wie soll es denn aussehen? Du änderst die Farbe vom Frame, das hat keinerlei Auswirkungen auf die Farbe von angezeigten Komponenten. Wenn du den Text geändert haben willst, muss du die Farbe des Textes ändern. Wenn den Hintergrund ändern willst, musst du entweder den Hintergrund des Labels ändern (und es auf nicht transparent setzen) oder vermutlich von der Rootpane die Farbe ändern.
 
K

kneitzel

Gast
Das JFrame ist so eigentlich nicht sichtbar, daher siehst Du die Farben nicht. Der Hintergrund ist nicht der background vom JFrame sondern con der ContentPane. Den Background müsstest Du also per getContentPane().setBackground(...) setzen können.
Und das beeinflusst aber nicht den Label - wie @LimDul bereits gesagt hat.

Und dann solltest Du mit dem static aufpassen. Warum ist das Jabel text bei dir static?
 

Kotelettklopfer

Bekanntes Mitglied
Das Programm soll nach dem öffnen immer zu bestimmten Uhrzeiten einen Text ausgeben. Gesteuert wird das durch "switch Case". Es kann auch vorkommen, das mal zwei Case gleichzeitig angezeigt werden müssen. Da ich es nicht hinbekommen habe, dass der Frame die Zeilen nicht gegenseitig überschreibt, habe ich mich für eine Variante entschieden, die für jeden Text ein neues Frame generiert.

Beim erstellen der neuen Klasse, schlug intelij "static" vor, da ich ansonsten Fehler bekomme.

Java:
 public static void setStatus(String status) {
        text.setText(status);
    }

"Non-static field 'text' cannot be referenced from a static context"


Ich hoffe man versteht was ich meine, mir fällt das erklären sehr schwer, weil mir die ganzen Begrifflichkeiten noch nicht ganz klar sind.
Denke aber ich lerne besser, wenn ich versuche eigene Projekte umzusetzen.

Sorry falls mal was durcheinander geworfen wird

Edit:
Das Programm läuft so auch, aber die Farbe macht Ärger :)
 
Zuletzt bearbeitet:

Kotelettklopfer

Bekanntes Mitglied
Ok habe es hinbekommen..
Vielen Dank.


[CODE lang="java" highlight="19,25"]import javax.swing.*;
import java.awt.*;

public class InfoFrame extends JFrame {


static JLabel text;



public InfoFrame() {
setVisible(true);
setSize(370, 100);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Boss Info");
setResizable(false);
setLayout(null);
getContentPane().setBackground(Color.red);



text = new JLabel();
text.setBounds(10, 15, 370, 20);
text.setForeground(Color.white);
add(text);


}




public static void setStatus(String status) {
text.setText(status);
}
}

[/CODE]
 

Kotelettklopfer

Bekanntes Mitglied
Zwei Dinge:
  1. static raus!
  2. setVisible immer ganz am Ende (hier also z. B. in Zeile 27) aufrufen.
dann haut er mir unten bei text.setText "Non-static field 'text' cannot be referenced from a static context" um die Ohren.


Habe dann das static auch unten entfernt bei "public static void SetStatus", dann meckert er in der Klasse "Applikation"
Non-static method 'setStatus(java.lang.String)' cannot be referenced from a static context

[CODE lang="java" highlight="39"]private void synth() throws MidiUnavailableException, InvalidMidiDataException, InterruptedException {

Synthesizer synth = MidiSystem.getSynthesizer();
synth.open();
Receiver rcvr = synth.getReceiver();
ShortMessage msg = new ShortMessage();
msg.setMessage(ShortMessage.NOTE_ON, 0, 30, 30);
rcvr.send(msg, -1);
Thread.sleep(100);
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 0);
msg.setMessage(ShortMessage.NOTE_ON, 0, 40, 40);
rcvr.send(msg, -1);
Thread.sleep(200);
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 0);
msg.setMessage(ShortMessage.NOTE_ON, 0, 50, 50);
rcvr.send(msg, -1);
Thread.sleep(300);
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 0);
msg.setMessage(ShortMessage.NOTE_ON, 0, 60, 60);
rcvr.send(msg, -1);
Thread.sleep(400);
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 0);
msg.setMessage(ShortMessage.NOTE_ON, 0, 80, 80);
rcvr.send(msg, -1);
Thread.sleep(500);
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 0);
msg.setMessage(ShortMessage.NOTE_ON, 0, 90, 90);
rcvr.send(msg, -1);
Thread.sleep(4000);
msg.setMessage(ShortMessage.NOTE_OFF, 0, 40, 0);
rcvr.send(msg, -1);
synth.close();
}

private void updateStatus(String status) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
InfoFrame.setStatus(status);
}
});
}
[/CODE]
 
K

kneitzel

Gast
Du erzeugst irgendwann eine Instanz von InfoFrame und speicherst diese als Instanzvariable. Auf dieser Instanzvariable rufst Du dann die Methode auf.

Die Instanz von InfoFrame erzeugst Du ja jetzt auch schon irgendwo - nur eben merkst Du Dir die Instanz nicht oder machst es an einer Stelle, die zu optimieren wäre ...
 

Kotelettklopfer

Bekanntes Mitglied
Ich kann versuchen was ich will, ich bekomme das static nicht sauber rauscodiert.
Er wirft immer diesen einen Fehler raus.
Seltsamerweise läuft die APP aber.

Warum genau ist static hier denn falsch?
 
K

kneitzel

Gast
Falsch ist relativ. Es ist nicht im Sinne einer objektorientierten Entwicklung.

Bei der objektorientierten Entwicklung hast du Objekte mit Attributen In Deinem Fall ist das Textfeld ja ein klares Attribut vom Fenster. Durch das static ist es aber kein Attribut des Fensters mehr sondern von der Klasse des Fensters.
Problematisch wird es, wenn Du z.B. mehrere Fenster darstellen willst. Dann hast Du mehrere Instanzen Deiner Klasse, aber diese Variable "text" gibt es nur einmal und verweist auf das Textfeld des letzten erzeugten Fensters.
 

Kotelettklopfer

Bekanntes Mitglied
Glaube ich habe es geschafft.
Zumindest sind die Statics raus (im Bezug zum Text)

Ich habe dazu Zeile 1 angepasst

[CODE lang="java" highlight="1,"]JLabel text = new JLabel();



public BossInfo() {
setSize(370, 100);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLocationRelativeTo(null);
setTitle("Boss Info");
setResizable(false);
setLayout(null);
getContentPane().setBackground(Color.red);



text = new JLabel();
text.setBounds(10, 15, 370, 20);
text.setForeground(Color.white);
add(text);

setVisible(true);
}




public void setStatus(String status) {
text.setText(status);
}
}
[/CODE]



und der Fehler lag dann in der Applikation Zeile 6. Hier stand BossInfo und nicht bossInfo.

[CODE lang="java" highlight="6"]
private void updateStatus(String status) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
bossInfo.setStatus(status);
}
});
}[/CODE]

So ist es "richtig" oder ?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JWindow schließen wenn Frame sich ändert AWT, Swing, JavaFX & SWT 2
Fragerjava Frame inhalt komplett löschen AWT, Swing, JavaFX & SWT 4
volcanos Scrollen: JScrollPane mit Graphics g und Java-Fonts extends Frame ? AWT, Swing, JavaFX & SWT 5
P Swing Zufallsbilder auf Frame ausgeben AWT, Swing, JavaFX & SWT 1
D AWT Wie kann ich ein Frame von einem anderen aus beeinflussen? AWT, Swing, JavaFX & SWT 7
R 2D-Grafik Massive Frame Drops beim Benutzen von AffineTransformOp AWT, Swing, JavaFX & SWT 2
C Swing F5 Taste neu laden auf ganzen Frame AWT, Swing, JavaFX & SWT 9
J Genutzte Methoden in einen Frame einbauen AWT, Swing, JavaFX & SWT 21
H Swing Frame an andere Klassen weitergeben AWT, Swing, JavaFX & SWT 4
olfibits Swing JavaFX-Frame in JDesktopPane darstellen? AWT, Swing, JavaFX & SWT 2
F Swing Frame nach vorne holen AWT, Swing, JavaFX & SWT 2
J Panel auf Frame positionieren AWT, Swing, JavaFX & SWT 9
K Frame aus anderer Klasse schließen AWT, Swing, JavaFX & SWT 3
F AWT mehrere Panels in einem Frame AWT, Swing, JavaFX & SWT 17
S Tastatur frame nur nur 1 mal öffnen AWT, Swing, JavaFX & SWT 1
T Swing Java-Frame bei Programmstart NICHT im Vordergrund öffnen AWT, Swing, JavaFX & SWT 2
A Programm nun in ein Frame basteln AWT, Swing, JavaFX & SWT 1
T Frame öffnet nicht AWT, Swing, JavaFX & SWT 1
A Swing GUI - Button soll Frame verändern AWT, Swing, JavaFX & SWT 4
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
S mit keylistener frame schliessen AWT, Swing, JavaFX & SWT 8
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
J Panel auf Frame löschen und neues Panel Hinzufügen AWT, Swing, JavaFX & SWT 4
D Frame beim starten eines anderen Frames schließen AWT, Swing, JavaFX & SWT 2
S NetBeans, Panel in Frame einfügen AWT, Swing, JavaFX & SWT 3
M Internal Frame in den vordergrund AWT, Swing, JavaFX & SWT 4
Tausendsassa Frame öffnet aber zeigt keinen Inhalt... AWT, Swing, JavaFX & SWT 10
Tom299 JavaFX Ähnliche Komponente wie der VB6 Frame? AWT, Swing, JavaFX & SWT 2
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
K Swing JScrollPane - JScrollBar anzeigen, wenn Frame verkleinert wird AWT, Swing, JavaFX & SWT 3
D Buttons erscheinen nicht auf Frame AWT, Swing, JavaFX & SWT 2
M Swing Probleme mit Frame.pack() AWT, Swing, JavaFX & SWT 1
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
D jButton Problem, ein Rieser Button bedeckt das ganze frame AWT, Swing, JavaFX & SWT 1
M JavaFX wie kann mann sein frame mit einem Icon fersehen? AWT, Swing, JavaFX & SWT 2
Z Canvas in Frame einfügen. Problem mit 4-Gewinnt AWT, Swing, JavaFX & SWT 1
P Frame friert ein AWT, Swing, JavaFX & SWT 6
Z Frame mit Rechteck! AWT, Swing, JavaFX & SWT 16
Messoras JWindow/Frame durch das man durchklicken kann AWT, Swing, JavaFX & SWT 5
M Swing "Frame.setResizable(false);" verschiebt Content? AWT, Swing, JavaFX & SWT 9
X Swing 1 JButton bedeckt meine ganze Frame aber Warum? AWT, Swing, JavaFX & SWT 2
J JTable aktuallisieren über anderen Frame AWT, Swing, JavaFX & SWT 6
J JTable Zeile anklicken und neues Frame öffnen AWT, Swing, JavaFX & SWT 4
S Quadrat auf Frame zeichnen AWT, Swing, JavaFX & SWT 2
B JFrame immer an gleicher stelle auf anderem Frame AWT, Swing, JavaFX & SWT 5
F JAVA-EDITOR: Panel in Frame aufnehmen AWT, Swing, JavaFX & SWT 3
B Swing JMenuBar unten in der Frame setzen? AWT, Swing, JavaFX & SWT 15
U Frame zeigt keine Komponenten AWT, Swing, JavaFX & SWT 7
L JButton im Frame fest verankern AWT, Swing, JavaFX & SWT 0
D Buttons erscheinen nicht auf dem zweiten Frame AWT, Swing, JavaFX & SWT 4
X Swing Größe eines Fensters JFrame / Frame AWT, Swing, JavaFX & SWT 5
BRoll Frame- Video einbinden machbar? AWT, Swing, JavaFX & SWT 6
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
B Frame always on top nur auf anderem Frame AWT, Swing, JavaFX & SWT 9
S Aufteilung von JPanels in einem Frame AWT, Swing, JavaFX & SWT 13
K Options-Frame integrieren (zum zuschalten und wegschalten wie geht man da ran? AWT, Swing, JavaFX & SWT 7
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
N Swing Endlosschleife blockt Frame AWT, Swing, JavaFX & SWT 11
B Swing JDialog modal, aber trotzdem Frame auswählbar AWT, Swing, JavaFX & SWT 2
N Swing Frame ungewollt transparent! AWT, Swing, JavaFX & SWT 2
J Kleines Anzeige Problem(nur blanker Frame) AWT, Swing, JavaFX & SWT 22
D Neues Frame öffnen - und dazu altes schließen AWT, Swing, JavaFX & SWT 5
Daniel_L Drop von Dateien auf Frame - welche Drop-Location? AWT, Swing, JavaFX & SWT 2
J JMenuBar ist geaddet, aber nicht im Frame. Wo ist der Fehler? (inkl. Code) AWT, Swing, JavaFX & SWT 2
C LookAndFeel Frame updated nicht vollständig AWT, Swing, JavaFX & SWT 9
K 3D-Grafik Canvas ist ein eigener Frame?! AWT, Swing, JavaFX & SWT 13
L Jbutton + jcombobox mit vorhandenen frame verknüfen AWT, Swing, JavaFX & SWT 8
J 2 Bereiche im Frame komplett nutzen - Welchen Layoutmanager? AWT, Swing, JavaFX & SWT 3
Z Swing JTextfield auf Frame AWT, Swing, JavaFX & SWT 13
N Swing Frame mit GlassPane und Popup AWT, Swing, JavaFX & SWT 5
L Frame Schließen und neustarten AWT, Swing, JavaFX & SWT 4
L Mehre Panels einen Frame zuweisen AWT, Swing, JavaFX & SWT 11
P Frame "always on top" und welche GUI? AWT, Swing, JavaFX & SWT 5
Furtano AWT mehrere Bilder in einen Frame zeichnen + Layout Manager AWT, Swing, JavaFX & SWT 10
S JMenuBar Frame Abstand AWT, Swing, JavaFX & SWT 3
J Swing Frame öffnen aus Frame mit JButton AWT, Swing, JavaFX & SWT 2
X Alte Frame-Größe beim wiederholten Aufruf AWT, Swing, JavaFX & SWT 5
M erstes Frame wartet auf die Auswertung eines zweiten AWT, Swing, JavaFX & SWT 8
J Frame-Steuerelement AWT, Swing, JavaFX & SWT 2
L Swing Flackern in Frame bei erstem Klick AWT, Swing, JavaFX & SWT 19
F Hintergrundbild im Frame AWT, Swing, JavaFX & SWT 11
S Zeichnen führt zu transparentem Frame AWT, Swing, JavaFX & SWT 6
S Swing Frame und Klasse extends JPanel - Komponenten zur Laufzeit austauschen AWT, Swing, JavaFX & SWT 18
B Frame im Frame? AWT, Swing, JavaFX & SWT 4
C WindowListener Frame AWT, Swing, JavaFX & SWT 8
P klassenübergreifendes Frame AWT, Swing, JavaFX & SWT 6
B Text soll nich über das Frame hinausgehen AWT, Swing, JavaFX & SWT 5
J Hintergrund Label-Frame AWT, Swing, JavaFX & SWT 3
Spin JFrame/ Frame Drag and Drop AWT, Swing, JavaFX & SWT 13
S Swing Panelgröße anpassen wenn Frame maximiert wird AWT, Swing, JavaFX & SWT 2
K MouseListener für Objekte auf einem Frame AWT, Swing, JavaFX & SWT 4
3 Eigenes Frame/Window programmieren AWT, Swing, JavaFX & SWT 2
A Hintergrund von einem Frame ändern AWT, Swing, JavaFX & SWT 3
D Mehrere JTabel in einem Frame positionieren AWT, Swing, JavaFX & SWT 5
M Im Frame wird nur die Menüleiste erstellt und nicht die Tabelle? AWT, Swing, JavaFX & SWT 3
N Swing außerhalb des Hauptframe Komponente/Frame öffnen AWT, Swing, JavaFX & SWT 2
T Mehrere sich bewegende Objekte in einem Frame AWT, Swing, JavaFX & SWT 14
J "Warte Frame" AWT, Swing, JavaFX & SWT 3
K Swing JDialog aus Frame ausrufen AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben