2016-09-23 9 views
0

Versuchen, die Hintergrundfarbe meines JPanel aus einer anderen Klasse mit einer Variablen zu ändern. Warum gibt mir das einen Fehler? (Wirklich neu zu Java, sorry ...)Farbiger Hintergrund von JPanel aus verschiedenen Klassen?

import java.awt.Color; 

import javax.swing.*; 

public class window { 

    public window(int x, int y, boolean isVisible, boolean isResizable, Color col){ 
     JFrame jframe = new JFrame(); 
     int xSize = x; 
     int ySize = y; 
     jframe.setSize(xSize, ySize); 
     jframe.setVisible(isVisible); 
     jframe.setResizable(isResizable); 

     JPanel jpanel = new JPanel(); 
     jframe.add(jpanel); 
     jpanel.setSize(xSize - 100, ySize - 100); 
     jpanel.setOpaque(true); 
     jpanel.setBackground(Color.col); 
     jpanel.setVisible(true); 

    } 

} 

Meine Hauptklasse tut dies:

import java.awt.Color; 


public class design { 

    public static void main(String[] args) { 
     window window1 = new window(400, 200, true, true, Color.green); 
     window window2 = new window(1000, 720, true, true, Color.red); 
    } 

} 

Der Fehler es gibt mir ist 'col kann nicht auf ein Feld gelöst werden'. Was ich weiß, bedeutet, dass es nicht versteht, was col dort macht, aber das ist es, worüber ich verwirrt bin, weil ich es als Farbe deklariert habe ...

Antwort

4

Sie beziehen sich auf die Variable get vom Konstruktor.

Ändern Sie einfach die jpanel.setBackground(Color.col); zu:

jpanel.setBackground(col); 
+0

Danke, das war ich auch verstehen. Ich werde die Antwort akzeptieren, wenn der Timer abgelaufen ist, du warst zu schnell;). Nur aus Neugier, was denkst du über meinen Code? Benutze ich Klassen richtig und effizient? – Cutter

+1

Zuerst sollten Sie gemäß den Java-Konventionen die Klasse mit einem Großbuchstaben ('Window') benennen. Dann sollte die 'Window' Klasse 'JFrame' erweitern oder zumindest als privates Feld mit Gettern/Settern versehen sein. Es gibt keinen allgemeinen Weg, wie man einen Code schreibt, also muss man es selbst ausprobieren und Erfahrungen mit einer Übung sammeln :) –

+0

Okay ja, mein Bad mit den Hauptstädten, weil ich das wusste ... Warum sollte die Fensterklasse JFrame erweitern? ? Ist das nicht schon Teil davon, weil es importiert wurde? – Cutter

Verwandte Themen