Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Desktop-Applikationen und Grafik > Color lässt sich nicht verändern
Antwort
 
Themen-Optionen
Alt 12.05.2005, 15:00   Nach oben    #1
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard Color lässt sich nicht verändern

Die "Hauptklasse" ruft diese Klasse auf:

PHP-Code:
class ownDesign extends JDialog implements ActionListener 
    
   
ZeichnenTet mal = new ZeichnenTet(); 
   
String[] str = { "<html>Alle Werte von<br>0 - 255<html>""Rotwert""Grünwert""Blauwert""Bestätigen" }; 
   
String[] str2 = { "<html>1. Hintergrund-<br>farbe<html>""<html>2. Hintergrund-<br>rahmen<html>""<html>3. Deadline<br>4. Punktestand<html>""<html> 5. Steinfarbe<br>6. Steinrahmen<html>" }; 
   
JPanel pane = new JPanel(); 
   
JPanel[] vorschau = new JPanel[6]; 
   
JButton[] oks = new JButton[6]; 
   
JButton uebernehmen = new JButton("Ändern"); 
   
JTextField[] werte = new JTextField[18]; 
   
JLabel[] beschriftung = new JLabel[5]; 
   
JLabel[] legende = new JLabel[str2.length]; 
    
   public 
ownDesign() { 
       
      
setSize(500300); 
      
pane.setLayout(new GridLayout(8455)); 
      
uebernehmen.addActionListener(this); 
      for (
int a 0str.lengtha++) { 
         
beschriftung[a] = new JLabel(str[a]); 
         
pane.add(beschriftung[a]); 
      } 
      for (
int a 06a++) { 
         
vorschau[a] = new JPanel(); 
         
pane.add(vorschau[a]); 
         
vorschau[a].setBackground(Color.black); 
         for (
int b 33b++) { 
            
werte[b] = new JTextField(""3); 
            
pane.add(werte[b]); 
         } 
         
oks[a] = new JButton("OK"); 
         
oks[a].addActionListener(this); 
         
pane.add(oks[a]); 
      } 
      for (
int a 0str2.lengtha++) { 
         
legende[a] = new JLabel(str2[a]); 
         
pane.add(legende[a]); 
      } 
      
pane.add(uebernehmen); 
      
setContentPane(pane); 
   } 
    
   public 
void actionPerformed(ActionEvent evt) { 
       
      
Object source evt.getSource(); 
      if (
source == uebernehmen) { 
         try { 
            
mal.back = new Color(Integer.parseInt(werte[0].getText()), Integer.parseInt(werte[1].getText()), Integer.parseInt(werte[2].getText())); 
            
mal.rahmenBack = new Color(Integer.parseInt(werte[3].getText()), Integer.parseInt(werte[4].getText()), Integer.parseInt(werte[5].getText())); 
            
mal.deadline = new Color(Integer.parseInt(werte[6].getText()), Integer.parseInt(werte[7].getText()), Integer.parseInt(werte[8].getText())); 
            
mal.punktestand = new Color(Integer.parseInt(werte[9].getText()), Integer.parseInt(werte[10].getText()), Integer.parseInt(werte[11].getText())); 
            
mal.stein = new Color(Integer.parseInt(werte[12].getText()), Integer.parseInt(werte[13].getText()), Integer.parseInt(werte[14].getText())); 
            
mal.rahmenStein = new Color(Integer.parseInt(werte[15].getText()), Integer.parseInt(werte[16].getText()), Integer.parseInt(werte[17].getText())); 
         } 
         catch (
NumberFormatException e) { 
            
JOptionPane.showMessageDialog(null
            
"Bitte Werte zwischen 0 und 255 eingeben"
            
"Fehler!"
            
JOptionPane.ERROR_MESSAGE); 
         } 
      } 
      else { 
         for (
int a 06a++) { 
            if (
source == oks[a]) { 
               try { 
                  
vorschau[a].setBackground(new Color(Integer.parseInt(werte[3].getText()), Integer.parseInt(werte[1].getText()), Integer.parseInt(werte[2].getText()))); 
               } 
               catch (
NumberFormatException e) { 
                  
JOptionPane.showMessageDialog(null
                  
"Bitte Werte zwischen 0 und 255 eingeben"
                  
"Fehler!"
                  
JOptionPane.ERROR_MESSAGE); 
               } 
            } 
         } 
      } 
   } 

und diese ändert dann Colorwerte in der Klasse ZeichnenTet. Nur werden die nicht übernommen :confused: . Wenn ich dagegen in meiner Klasse von der ich ownDesign aufrufe die Werte für ZeichnenTet ändere funktioniert das einwandfrei. Woran liegt das?
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 15:08   Nach oben    #2
sparrow
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Was bedeutet sie werden nicht übernommen?

Wenn ich dich richtig verstehe:

Du hast in der Hauptklasse auch eine Instanz von ZeichnenTet() und möchtest die hierheraus ändern?

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 15:21   Nach oben    #3
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Ich möchte von dieser Klasse aus die Farben einer anderen Klasse ändern. Wenn ich das ganze von der Hauptklasse aus mache (die Farben ändern), dann funktioniert das einwandfrei, aber wenn ich es von ownDesign mache, klappt das nicht :confused:
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 12.05.2005, 16:05   Nach oben    #4
sparrow
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

Versuch mal bitte foldends:

PHP-Code:
         try { 
            
mal.back = new Color(Integer.parseInt(werte[0].getText()), Integer.parseInt(werte[1].getText()), Integer.parseInt(werte[2].getText())); 
            
mal.rahmenBack = new Color(Integer.parseInt(werte[3].getText()), Integer.parseInt(werte[4].getText()), Integer.parseInt(werte[5].getText())); 
            
mal.deadline = new Color(Integer.parseInt(werte[6].getText()), Integer.parseInt(werte[7].getText()), Integer.parseInt(werte[8].getText())); 
            
mal.punktestand = new Color(Integer.parseInt(werte[9].getText()), Integer.parseInt(werte[10].getText()), Integer.parseInt(werte[11].getText())); 
            
mal.stein = new Color(Integer.parseInt(werte[12].getText()), Integer.parseInt(werte[13].getText()), Integer.parseInt(werte[14].getText())); 
            
mal.rahmenStein = new Color(Integer.parseInt(werte[15].getText()), Integer.parseInt(werte[16].getText()), Integer.parseInt(werte[17].getText())); 
         } 
System.out.println(mal.back);
System.out.println(mal.rahmenBack); 
Mal schauen ob die Variablen in der Klasse ankommen, oder die Variablen in der Klasse als final oder private sind.

Also, eigentlich sollte es jetzt zur Ausgabe der Werte der Varianblen kommen.


Gib mir mal ein Schema deines Programms, wird diese Klasse ZeichnenDet irgendwo im Programm nochmal verwendet?
Und wenn ja, warum?

Gruß
Sparrow
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.05.2005, 07:45   Nach oben    #5
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

ZeichnenTet, wird noch von meiner Hauptklasse benutzt. Jup, werte kommen an! Das komische ist, wenn ich das ganze so umschreibe, dass ich eine Methode in der Klasse ZeichnenTet habe, der ich dann die jeweiligen Werte übergebe und mit diesen dann direkt in der Klasse die Farben ändere (also praktisch so:

PHP-Code:
 class ZeichnenTet extends JPanel {
...
   
void changeColor(... die ganzen Farben übergeben) {
 
     
back = new Color(... werte);
     
backRahmen = new Color(... werte);
     ...
   }
}
 
class 
ownDesign extends JDialog implements ActionListener {
 
   
ZeichnenTet mal = new ZeichnenTet();
   ...
   
mal.changeColor(... werte)

), dann stimmen sie zwar, wenn ich sie ausgebe in der Methode changeColor, aber beim Neuzeichnen nicht mehr. Hoff ich konnt mich einigermaßen klar ausdrücken, dass was ich geschrieben hab verwirrt mich nämlich selbst
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.05.2005, 09:02   Nach oben    #6
sparrow
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

wenn ich dich richtig vertanden habe, dann hast du vergessen die Instanz von ZeichnenTet aus der Hauptklasse nach ownDesign zu übergeben:

PHP-Code:
class ownDesign extends JDialog implements ActionListener 
    
   
ZeichnenTet mal;  // Change by sparrow@jforum
   
String[] str = { "<html>Alle Werte von<br>0 - 255<html>""Rotwert""Grünwert""Blauwert""Bestätigen" }; 
   
String[] str2 = { "<html>1. Hintergrund-<br>farbe<html>""<html>2. Hintergrund-<br>rahmen<html>""<html>3. Deadline<br>4. Punktestand<html>""<html> 5. Steinfarbe<br>6. Steinrahmen<html>" }; 
   
JPanel pane = new JPanel(); 
   
JPanel[] vorschau = new JPanel[6]; 
   
JButton[] oks = new JButton[6]; 
   
JButton uebernehmen = new JButton("Ändern"); 
   
JTextField[] werte = new JTextField[18]; 
   
JLabel[] beschriftung = new JLabel[5]; 
   
JLabel[] legende = new JLabel[str2.length]; 
    
   public 
ownDesign(ZeichnenTet mal) {   // Change by sparrow@jforum 
      
this.mal mal;                              // Change by sparrow@jforum
      
setSize(500300); 
      
pane.setLayout(new GridLayout(8455)); 
      
uebernehmen.addActionListener(this); 
      for (
int a 0str.lengtha++) { 
         
beschriftung[a] = new JLabel(str[a]); 
         
pane.add(beschriftung[a]); 
      } 
      for (
int a 06a++) { 
         
vorschau[a] = new JPanel(); 
         
pane.add(vorschau[a]); 
         
vorschau[a].setBackground(Color.black); 
         for (
int b 33b++) { 
            
werte[b] = new JTextField(""3); 
            
pane.add(werte[b]); 
         } 
         
oks[a] = new JButton("OK"); 
         
oks[a].addActionListener(this); 
         
pane.add(oks[a]); 
      } 
      for (
int a 0str2.lengtha++) { 
         
legende[a] = new JLabel(str2[a]); 
         
pane.add(legende[a]); 
      } 
      
pane.add(uebernehmen); 
      
setContentPane(pane); 
   } 
    
   public 
void actionPerformed(ActionEvent evt) { 
       
      
Object source evt.getSource(); 
      if (
source == uebernehmen) { 
         try { 
            
mal.back = new Color(Integer.parseInt(werte[0].getText()), Integer.parseInt(werte[1].getText()), Integer.parseInt(werte[2].getText())); 
            
mal.rahmenBack = new Color(Integer.parseInt(werte[3].getText()), Integer.parseInt(werte[4].getText()), Integer.parseInt(werte[5].getText())); 
            
mal.deadline = new Color(Integer.parseInt(werte[6].getText()), Integer.parseInt(werte[7].getText()), Integer.parseInt(werte[8].getText())); 
            
mal.punktestand = new Color(Integer.parseInt(werte[9].getText()), Integer.parseInt(werte[10].getText()), Integer.parseInt(werte[11].getText())); 
            
mal.stein = new Color(Integer.parseInt(werte[12].getText()), Integer.parseInt(werte[13].getText()), Integer.parseInt(werte[14].getText())); 
            
mal.rahmenStein = new Color(Integer.parseInt(werte[15].getText()), Integer.parseInt(werte[16].getText()), Integer.parseInt(werte[17].getText())); 
         } 
         catch (
NumberFormatException e) { 
            
JOptionPane.showMessageDialog(null
            
"Bitte Werte zwischen 0 und 255 eingeben"
            
"Fehler!"
            
JOptionPane.ERROR_MESSAGE); 
         } 
      } 
      else { 
         for (
int a 06a++) { 
            if (
source == oks[a]) { 
               try { 
                  
vorschau[a].setBackground(new Color(Integer.parseInt(werte[3].getText()), Integer.parseInt(werte[1].getText()), Integer.parseInt(werte[2].getText()))); 
               } 
               catch (
NumberFormatException e) { 
                  
JOptionPane.showMessageDialog(null
                  
"Bitte Werte zwischen 0 und 255 eingeben"
                  
"Fehler!"
                  
JOptionPane.ERROR_MESSAGE); 
               } 
            } 
         } 
      } 
   } 


Instanzierung von ownDesign in der Hauptklasse dann wie folgt:

PHP-Code:
OwnDesign ownDesign = new OwnDesign(deineInstanzVonZeichnenTetInHauptklasse); 

Ich hoffe das ist dein Problem
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 13.05.2005, 09:07   Nach oben    #7
Gottzilla
Erfahrener Benutzer
 
Benutzerbild von Gottzilla
 
Registriert seit: 02.02.2005
Beiträge: 515
Standard

Jo, so funktionierts! Ich bin begeistert! Wenn du mir jetzt noch erklärst warum das so ist, bin ich glücklich . So hab ich das nämlich noch nie gemacht und ich weiß auch nicht wirklich warum es jetzt funktioniert und vorher nicht.:confused:
Gottzilla ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten