# static



## dudu3k (22. Okt 2007)

moinmoin,
hab mal eine frage zu static. beim entwickeln kam immer wieder die fehlermeldung non-static method not allowed in this static context. also ich wüsste gerne wie ich mit diesem fehler umgehe und was die genaue bedeutung von static und non-static ist. dass eine static methode oder variable nur einmal existiert ist mir schon klar.
zur anwendung mein aktueller fehler: Locale.getLanguage() geht nicht mit obiger fehlermeldung. vieleicht kann mir auch jemand sagen wie ich den aufruf einbauen muss?
danke im vorraus!


----------



## The_S (22. Okt 2007)

Schau in die FAQ, da steht alles, was du über static wissen musst.

getLanguage ist keine statische Methode. Du musst also zuerst ein neues Objekt von Locale erzeugen, dann kannst du auf die Methode zugreifen.


----------



## dudu3k (15. Mrz 2008)

danke!
die faq hab ich erst nicht verstanden, ist zu umständlich geschrieben - ka!


----------



## Quaxli (15. Mrz 2008)

Die FaQ ist keineswegs umständlich geschrieben, ich finde Beni hat da gute Arbeit geleistet. Entweder beschäftigst Du Dich nochmal mit dem Thema Objektorientierung genauer, z. B. in www.javabuch.de oder Du machst Dir wenigstens mal die Mühe, die Beispielprogramme von Beni zu kopieren und auszutesten.
Die FAQ enthalten eine gut gemachte Erklärung und ausführbare Beispiele, die das gut darstellen. Was denn noch? Soll jemand bei Dir vorbei kommen.  :bahnhof:


----------



## dudu3k (15. Mrz 2008)

mir waren das zu viele beispiele auf einmal!
das oop auf der url habe ich in reihenfolge gelesen, also ganz am anfang, und hab nicht viel nutzen daraus ziehen können. aber danke für den tip, ich werd noch mal reinschauen. hab ja schon den hamster und ein anderes buch darüber gelesen. nur hamster war auch so ein overkill an beisielen und das andere hatte nicht so viel zu bieten!
gn8


----------



## The_S (20. Mrz 2008)

also ich wollte eigentlich immer so viele beispiele wie irgend möglich ???:L



> das oop auf der url habe ich in reihenfolge gelesen, also ganz am anfang, und hab nicht viel nutzen daraus ziehen können.



:bahnhof: ??? Du weißt, was OOP ist!? Objekt-Orientierte-Programmierung und kein Buch


----------



## Gast (20. Mrz 2008)

lol da hat wohl jemand keine ahnung und auch keine lust das zu ändern...


----------



## Leroy42 (20. Mrz 2008)

Gast hat gesagt.:
			
		

> lol da hat wohl jemand keine ahnung und auch keine lust das zu ändern...





			
				dudu3k's Signatur hat gesagt.:
			
		

> das genie beherrscht das chaos



Meinte dudu das nicht eher umgekehrt?  ???:L 

(SCNR)


----------



## dudu3k (20. Mrz 2008)

lol ich meinte die ersten vier kapitel über oop! 
mir fällt da grad eine neue signatur ein...


----------



## The_S (20. Mrz 2008)

das javabuch hat ÜBER 4 KAPITEL über oop???


----------



## dudu3k (20. Mrz 2008)

:### eigentlich nicht, aber das andere muss man ja auch lesen wenn man eine anwendung will!


----------



## The_S (20. Mrz 2008)

und nochmal auf deutch bitte  . 

Bzw. wo liegt jetzt dein genaues Problem? Was konkret verstehst du an static nicht? OOP verstehst du aber? Du weißt was Objekte, Klassen, packages, modifier, primitive Datentypen, deklarieren, initialisieren, ... ist/sind?


----------



## dudu3k (20. Mrz 2008)

also das weiss ich alles, mir fehlt nur noch praxis!
ich habe sogar ein aktuelles beispiel, wo ich nicht weiss wie ich den fehler behebe, und variablen einfach static sein müssen!?
dieses programm bricht mit einer fehlermeldung ab, aber es geht ja nur um den code, in dem an einer stelle sehr viele static variablen sind! meine frage wäre in diesem fall, ob die static sein müssen oder ob das auch anders geht? womit ich eine frage bestimmtfalsch falsch gestellt hätte!?
http://forum.java.sun.com/thread.jspa?threadID=5275535


----------



## The_S (20. Mrz 2008)

Generell kann man (gerade am Anfang) fast alles ohne static lösen. Also einfach mal alles static (außer von der main-Methode versteht sich  ) rausschmeisen.


----------



## dudu3k (20. Mrz 2008)

das geht ja leider nicht!


----------



## The_S (20. Mrz 2008)

du zeigst uns weder das beispiel, noch die fehlermeldung



> ich habe sogar ein aktuelles beispiel, ... dieses programm bricht mit einer fehlermeldung ab


----------



## dudu3k (20. Mrz 2008)

ich hab grade festgestellt, dass der fehler in meinem scce sogar wirklich mit static zu tun hat, und zwar in der ShockCfg.java!
dort sind viele variablen, die zum teil nur einmal vorkommen im program. die dürfen doch static sein?
und ich erhalte bei einem string-array wie ich dort grade gepostet hab, einen sehr ominösen fehler, aus dem ich nicht schlau werde!


----------



## The_S (20. Mrz 2008)

Klasse ... kannst du mir bitte mal verraten, wie wir wissen sollen was du falsch gemacht hast, wenn wir keinen Code + genaue Fehlermeldung sehen?


----------



## dudu3k (20. Mrz 2008)

ich hab den link 2 oder 3 posts voher angegeben! dort ist das progrmm der lange code auf der ersten seite.


----------



## The_S (20. Mrz 2008)

ja, du hast einen link hingeklatscht. Ohne Erklärung oder sonstige Hinweise, einfach nur, dass ein Link da ist.

Und du erwartest jetzt allen ernstes, dass sich jemand den haufen Code durchschaut? Kannst du den nicht aufs nötigste begrenzen?

Du hast viel zu viel static drin, was du nicht brauchst (das sieht man auf den 1. Blick). Außerdem ist auch viel zu viel public. Deine main-Methode ist auch viel zu überladen. Du scheinst sowieso modifier nach belieben zu verwenden. Die Code Conventions scheinen dich auch nicht zu interessieren.

Weißt du, was ich an deiner Stelle machen würde? Alles löschen, mir anhand von kleinen Beispielen zumindest mal die Grundgedanken von OOP aneigenen, und das ganze dann nochmal langsam, durchdacht und mit nem ordentlichen Klassendesign aufziehen. Mit dem Teil machst du ja jetzt schon ewig rum ...

Oder lass es alternativ ganz sein, könntest es evtl. auch mal mit einer nicht oop versuchen.

Das klingt jetzt zwar alles hart, ist aber so. Sorry


----------



## Leroy42 (20. Mrz 2008)

dudu3k hat gesagt.:
			
		

> und ich erhalte bei einem string-array [...] einen sehr *ominösen fehler*, aus dem ich nicht schlau werde!



 :shock: Habe schon immer vermutet, daß die Java-Entwickler 
nur einen neuen Geheimbund gründen wollten!  :meld: 



			
				Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Oder lass es alternativ ganz sein, _könntest es evtl. auch mal mit einer nicht oop versuchen._



Genau! Schon mal d'rüber nachgedacht, es als Comedian zu versuchen?

Ich denke mal, daß deine Talente in diesem Metier eher liegen!


----------



## dudu3k (20. Mrz 2008)

das verstehst du falsch! ich habe dort grade gepostet, dass ich nicht wusste, dass man ein scce nicht in eine datei packen muss! ich fang wirklich mit dem scce noch mal von vorne an!


----------



## dudu3k (20. Mrz 2008)

ich poste mal mein scce, die fehlermeldungen passen gut zum thread!  :autsch:


----------



## quippy (20. Mrz 2008)

dudu3k hat gesagt.:
			
		

> ich fang wirklich mit dem scce noch mal von vorne an!



Was zum Henker ist "scce"?! Sourcecode? Southern Cross Cultural Exchange? Service Center of Continous Engineering?

In dem Thread hast Du übrigens auch geschrieben, Du hättest Sourcecode per Cut&Paste in die Main-Methode verschoben und dann alle Vars static machen müssen.

Das ist
a) logisch, da "main" auch static ist und damit keine Instanz der Klasse kennt
b) ein Designproblem! Bitte lies Dir den Unterschied zwischen Instanz-Variablen und Klassen-Variablen mal an. Auch Sichtbarkeitsregeln könnten helfen

Desweiteren ist dein Projekt schon viel zu groß um als Lehrprojekt zu dienen - und du mußt noch viel lernen!

Sich eine Programmiersprache per Trial&Error autodidaktisch beizubringen ist lobenswert und auch richtig - aber wird dann zum Problem, wenn man in den Anfängen schludert. Das Du offensichtlich nicht weißt, daß in Java nur einer Klasse pro *.java-File (und damit pro *.class-File) existieren darf (außer Inner Klasses) zeigt, daß Du Dich allein mit den Grundzügen von Java nicht auskennst.

Daher empfehle ich Dir, Dir diese Grundlagen erst einmal beizubiegen. Java ist nicht PHP (sorry, wenn mir die PHP-Fraktion jetzt auf's Dach steigen will  ) Da sollte man vorher wissen, was man will.

Alternativ kannst Du einfach mal Querlesen, was dir z.B. UML (insbesondere Klassendiagramme) bieten können. Vielleicht malst Du dann erst mal.

Alternativ: schau Dir OpenSource-Code an. Egal was! Da kann man sich eine Menge abschauen, wie man z.B. vernünftig und mit gettern und settern eine GUI konstruiert - und die Logik per Delegation schön auslagert.

Und noch ein Merksatz: wenn eine Funktion mehr als 25 Zeilen Coding enthält, stimmt was nicht.


----------



## dudu3k (20. Mrz 2008)

quippy hat gesagt.:
			
		

> Was zum Henker ist "scce"?! Sourcecode? Southern Cross Cultural Exchange? Service Center of Continous Engineering?



so ein kleines program wie es verwendet wird, wenn man um hilfe bittet!


			
				quippy hat gesagt.:
			
		

> In dem Thread hast Du übrigens auch geschrieben, Du hättest Sourcecode per Cut&Paste in die Main-Methode verschoben und dann alle Vars static machen müssen.



da dacht ich noch, das müsste man bei sollch einem scce!


hier die fehlermeldungen:

```
./XerxesButton.java:52: non-static method setLoc(java.util.Locale) cannot be referenced from a static context
                                                SetRes.setLoc(en);
                                                      ^
./XerxesButton.java:58: non-static method setLoc(java.util.Locale) cannot be referenced from a static context
                                                SetRes.setLoc(d);
                                                      ^
./SetRes.java:21: cannot find symbol
symbol  : variable title11
location: class XerxesMain
                XerxesMain.title11.setTitle(ShockCfg.txt.getString("MainPaneLang"));
                          ^
./SetRes.java:22: non-static variable langLabel cannot be referenced from a static context
                XerxesMain.langLabel.setText(ShockCfg.txt.getString("MainLabelLang"));
                          ^
./SetRes.java:23: cannot find symbol
symbol  : variable idx
location: class SetRes
                idx = XerxesMain.langlist.getSelectedIndex();
                ^
./SetRes.java:27: cannot find symbol
symbol  : variable idx
location: class SetRes
                if(idx==0)
                   ^
./SetRes.java:29: cannot find symbol
symbol  : variable idx
location: class SetRes
                if(idx==1)
                   ^
./SetRes.java:37: cannot find symbol
symbol  : variable title5
location: class XerxesMain
                XerxesMain.title5.setTitle(ShockCfg.txt.getString("MainPaneShots"));
                          ^
./SetRes.java:38: non-static variable picLabel cannot be referenced from a static context
                XerxesMain.picLabel.setText(ShockCfg.txt.getString("MainLableShots"));
                          ^
./SetRes.java:39: non-static variable picButton cannot be referenced from a static context
                XerxesMain.picButton.setText(ShockCfg.txt.getString("MainButtonShots"));
                          ^
./SetRes.java:40: cannot find symbol
symbol  : variable title6
location: class XerxesMain
                XerxesMain.title6.setTitle(ShockCfg.txt.getString("MainPanRes"));
                          ^
11 errors
```

und hier zwei der resourcen, die in den unterordner resources gehören in dateien MyTextRecource_de.properties MyTextResource_en.properties usw.


```
Maintab=Haupt
MainPaneJoy=Joystick
MainJoy=Joystick verwenden
MainPaneRog=Roger Wilco
MainRog=mit SS2 starten
MainPaneIntel=Intel Grafik Chips
MainIntel=Fehler beheben
MainPaneLang=Texte in System Shock 2
MainLabelLang=Language: 
MainDeuLang=Deutsch
MainEngLang=Englisch
MainPaneSave=Spielstaende
MainSave=benennbar
MainPaneMode=Soft-/Hardwaremode
MainMode=Hardwaremode aus
MainPaneBlut=Blut
MainBlut=einschalten
MainPaneShots=Screenshots
MainLableShots=Bildnr.: 
MainButtonShots=ansehen
ButtonLabelLang=Sprache von ShockCfg:
ButtonRadioGer=Deutsch
ButtonRadioEng=Englisch
RCCErrFehler=Fehler beim lesen der cam.cfg.
RICErrFehler=Fehler in der install.cfg! Falsche Sprache!
RICErrFehler3=Fehler beim lesen der install.cfg.
RSCErrFehler=Fehler beim lesen der shock.cfg.
RUCErrFehler=Waffenverschleiss zu klein oder zu gross!
RUCErrFehler2=user.cfg existiert nicht
RUCErrFehler6=lower spam min zu klein oder zu gross!
RUCErrFehler7=raise spam rand zu klein oder zu gross!
RickErrThr=Fehler Thread unterbrochen.
ShockPriHelp=Hilfe: java ShockCfg [help|xerxes|citadell|version]
WCCErrFehler=Fehler beim schreiben der cam.cfg.
WCCErrFehler2=Error
WICErrFehler=Fehler beim schreiben der Install.cfg.
WICErrFehler2=Dateifehler: install.cfg
WSCErrFehler=Fehler beim schreiben der Shock.cfg.
WSCErrFehler2=Dateifehler: Shock.cfg
WUCErrFehler=Error user.cfg
MainPanRes=Aufloesung
Main640480=640x480
Main800600=800x600
Main1024768=1024x768
Main12801024=1280x1024
Main16001200=1600x1200
```


```
Maintab=Main

MainPaneJoy=Joystick

MainJoy=use Joystick

MainPaneRog=Roger Wilco

MainRog=start with SS2

MainPaneIntel=Intel Graphic Chips

MainIntel=correct Errors

MainPaneLang=Texts in System Shock 2

MainLabelLang=Language: 

MainDeuLang=German

MainEngLang=English

MainPaneSave=Savegames

MainSave=namable

MainPaneMode=Software/hardware mode

MainMode=turn hardware off

MainPaneBlut=Blood

MainBlut=turn on

MainPaneShots=Screenshots

MainLableShots=Picture no.:

MainButtonShots=Show

ButtonLabelLang=Language of ShockCfg:

ButtonRadioGer=German

ButtonRadioEng=English

ButtonButtonSave=Save

ButtonButtonAbb=Abort

RCCErrFehler=Error reading cam.cfg.

RICErrFehler=Error in install.cfg! Wrong language!

RICErrFehler3=Error reading install.cfg.

RSCErrFehler=Error reading shock.cfg.

RUCErrFehler=weapon wearout too low or too high!

RUCErrFehler2=user.cfg does not exist

RUCErrFehler6=lower spam min too low or too high!

RUCErrFehler7=raise spam rand too low or too high!

RickErrThr=Error: thread interrupted. // interrupted oder aborted oder canceled? (bin mir nicht sicher was genau das beschrreibt)

ShockPriHelp=Help use: java ShockCfg [help|xerxes|citadell|rickenbacker|version]

WCCErrFehler=Error writing cam.cfg.

WCCErrFehler2=Error

WICErrFehler=Error writing Install.cfg.

WICErrFehler2=File error: install.cfg

WSCErrFehler=Error writing Shock.cfg.

WSCErrFehler2=File error: Shock.cfg

WUCErrFehler=Error user.cfg

MainPanRes=Resolution

Main640480=640x480

Main800600=800x600

Main1024768=1024x768

Main12801024=1280x1024

Main16001200=1600x1200
```

und nun die java dateien


```
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.LookAndFeel.*;

import java.util.*;



public class ShockCfg

{ 

	static ResourceBundle txt;



	public ShockCfg()

	{

		Locale sprache = Locale.getDefault();

		try 

    		{

			System.out.println(sprache.getLanguage());

			txt = ResourceBundle.getBundle("resources.MyTextResource", sprache);

		}

		catch ( MissingResourceException e )

		{

			System.err.println( e );

		}

	}

	

	

	

	public static void main(final String args[])

	{

		ShockCfg shock = new ShockCfg();

		Xerxes x = new Xerxes();

	}	

}
```


```
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

import javax.swing.plaf.*;



public class Xerxes

{

	public JFrame vonbraun;

	public JPanel vonbraunPanel;

	public static JTabbedPane planets;

	

	public Xerxes()

	{

		JFrame vonbraun = new JFrame();

		vonbraun.setLayout( new FlowLayout());

		vonbraunPanel = new JPanel();

		vonbraun.add(vonbraunPanel);

		vonbraunPanel.setOpaque(true);

		

		planets = new JTabbedPane(JTabbedPane.BOTTOM);

                planets.addTab(ShockCfg.txt.getString("Maintab"), new XerxesMain());

		    vonbraunPanel.add(planets);		

		XerxesButton bb = new XerxesButton(vonbraun);

		vonbraun.setSize(640,480);	//wo Groesse einstellen?

		vonbraun.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);	//EXIT_ON_CLOSE?

		vonbraun.setVisible(true);	//Fenster undursichtig

	}

}
```


```
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

import javax.swing.border.*;

import javax.swing.BorderFactory;

import javax.swing.plaf.basic.*;



public class XerxesButton extends JPanel

{

	public JFrame vonbraun;

	public JPanel nix;

	public JButton speicherButton, abbruchButton;

	public JRadioButton engBox, deuBox;

	public ButtonGroup langBoxes;

	public GridBagLayout gb;

	public GridBagConstraints gbc;

	public JLabel langtext;

	String[] langs = {ShockCfg.txt.getString("MainDeuLang"), ShockCfg.txt.getString("MainEngLang")};

	public JComboBox langlist = new JComboBox(langs);

	public JLabel langLabel;

	

	

	

	XerxesButton(JFrame vonbraun)

	{

		nix = new JPanel();

		nix.setLayout(gb = new GridBagLayout());

		gbc = new GridBagConstraints();

		langtext = new JLabel(ShockCfg.txt.getString("ButtonLabelLang"));

		gbc.gridx = 0;

		gbc.gridy = 0;

		gbc.gridwidth = 1;

		gbc.gridheight = 1;

		nix.add(langtext, gbc);

		langLabel = new JLabel(ShockCfg.txt.getString("MainLabelLang"));

		langLabel.setEnabled(false);

		langlist.setOpaque(true);

		gbc.gridx = 1;

		gbc.gridy = 0;

		nix.add(langlist);

		langlist.addItemListener(new ItemListener(){

			public void itemStateChanged(ItemEvent e) {

				if(e.getStateChange()==ItemEvent.SELECTED)

				{

					JComboBox cbe = (JComboBox)e.getItemSelectable();

					String str81 = (String)cbe.getSelectedItem();

					if(str81.contains("Englisch"))

					{

						System.out.println("en");

						Locale en = new Locale("EN");

						SetRes.setLoc(en);

					}

					if(str81.contains("German"))

					{

						System.out.println("de");

						Locale d = new Locale("DE");

						SetRes.setLoc(d);

					}

				}}});

		vonbraun.getContentPane().add(nix);

	 }

}
```


```
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.*;

import javax.swing.BorderFactory;

import javax.swing.plaf.basic.*;



public class XerxesMain extends JPanel

{

	public static JPanel mainPanel, joystickPanel, rogerPanel, intelPanel, langPanel, staendePanel, swmodePanel, blutPanel, picPanel, resPanel;

	public static JCheckBox joystickCheckbox, rogerCheckbox, intelCheckbox, staendeCheckbox, swmodeCheckbox, blutCheckbox;

	static String[] langs = {ShockCfg.txt.getString("MainDeuLang"), ShockCfg.txt.getString("MainEngLang")};

	public static JComboBox langlist = new JComboBox(langs);

	static String[] res = {ShockCfg.txt.getString("Main640480"), ShockCfg.txt.getString("Main800600"), ShockCfg.txt.getString("Main1024768"), ShockCfg.txt.getString("Main12801024"), ShockCfg.txt.getString("Main16001200")};

	public static JComboBox reslist = new JComboBox(res);

	public JLabel langLabel;

	String[] pics = {"666", "999"};

	public JComboBox piclist = new JComboBox(pics);

	public JLabel picLabel;

	public JButton picButton;

	

	XerxesMain()

	{

		this.setVisible(true);

		this.setOpaque(true);

		mainPanel = new JPanel();

		mainPanel.setLayout(new GridBagLayout());

		GridBagConstraints c = new GridBagConstraints();

		joystickPanel = xxo.pane(ShockCfg.txt.getString("MainPaneJoy"));

		joystickCheckbox = xxo.jcb(ShockCfg.txt.getString("MainJoy"), 0, 5, 5, 5);

		joystickPanel.add(joystickCheckbox);

		c.gridx=0;

		c.gridy=0;

	    	mainPanel.add(joystickPanel, c);



		rogerPanel = xxo.pane(ShockCfg.txt.getString("MainPaneRog"));

		rogerCheckbox = xxo.jcb(ShockCfg.txt.getString("MainRog"), 0, 5, 5, 5);

		rogerPanel.add(rogerCheckbox);

		c.gridx=1;

		c.gridy=0;

		mainPanel.add(rogerPanel, c);

		

		intelPanel = xxo.pane(ShockCfg.txt.getString("MainPaneIntel"));

		intelCheckbox = xxo.jcb(ShockCfg.txt.getString("MainIntel"), 0, 10, 10, 10);

		intelPanel.add(intelCheckbox);

		c.gridx=0;

		c.gridy=1;

		mainPanel.add(intelPanel, c);



		langPanel = new JPanel();

	    langPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));

	    TitledBorder title11;

		title11 = BorderFactory.createTitledBorder(

		BorderFactory.createEtchedBorder(EtchedBorder.LOWERED, Color.green, Color.green),

		ShockCfg.txt.getString("MainPaneLang"), 

		TitledBorder.LEADING, 

		TitledBorder.TOP, 

		new Font("Serif", Font.PLAIN, 14), 

	    	Color.green);

		langPanel.setEnabled(true);

	    	langLabel = new JLabel(ShockCfg.txt.getString("MainLabelLang"));

		langlist.setEditable(true);

		langlist.setOpaque(true);

		langlist.setEnabled(true);

	    	c.gridx=2;

		c.gridy=0;

		c.gridwidth=2;

		mainPanel.add(langPanel, c);

	    	langPanel.setBorder(title11);

		langPanel.add(langLabel);

	    	langPanel.add(langlist);

	    	staendePanel = xxo.pane(ShockCfg.txt.getString("MainPaneSave"));

		staendeCheckbox = xxo.jcb(ShockCfg.txt.getString("MainSave"), 0, 10, 10, 10);

		staendePanel.add(staendeCheckbox);

		c.gridx=1;

		c.gridy=1;

	    	mainPanel.add(staendePanel, c);



		swmodePanel = xxo.pane(ShockCfg.txt.getString("MainPaneMode"));

		swmodeCheckbox = xxo.jcb(ShockCfg.txt.getString("MainMode"), 0, 10, 10, 10);

		swmodePanel.add(swmodeCheckbox);

		c.gridx=2;

		c.gridy=1;

		c.gridwidth=2;

	    	mainPanel.add(swmodePanel, c);

		blutPanel = xxo.pane(ShockCfg.txt.getString("MainPaneBlut"));

		blutCheckbox = xxo.jcb(ShockCfg.txt.getString("MainBlut"), 0, 10, 10, 10);

		blutPanel.add(blutCheckbox);

		c.gridx=0;

		c.gridy=2;

	    	mainPanel.add(blutPanel, c);

	    

	    	picPanel = new JPanel();

	    	picPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));

	   	TitledBorder title5;

		title5 = BorderFactory.createTitledBorder(

		BorderFactory.createEtchedBorder(EtchedBorder.LOWERED, Color.green, Color.green),

		ShockCfg.txt.getString("MainPaneShots"), 

		TitledBorder.LEADING, 

		TitledBorder.TOP, 

		new Font("Serif", Font.PLAIN, 14), 

	    	Color.green);

		picPanel.setEnabled(false);

	    JLabel picLabel = new JLabel(ShockCfg.txt.getString("MainLableShots"));

		piclist.setEditable(true);

	piclist.setOpaque(true);

	picButton = new JButton(ShockCfg.txt.getString("MainButtonShots"));

	    c.gridx=2;

		c.gridy=2;

		c.gridwidth=3;

	    mainPanel.add(picPanel, c);

	    picPanel.setBorder(title5);

	    picPanel.add(picLabel);

	    picPanel.add(piclist);

	    picPanel.add(picButton);



		resPanel = new JPanel();

		resPanel.setLayout(new FlowLayout(FlowLayout.LEFT, 10, 10));

	    		TitledBorder title6;

			title6 = BorderFactory.createTitledBorder(

			BorderFactory.createEtchedBorder(EtchedBorder.LOWERED, Color.green, Color.green),

			ShockCfg.txt.getString("MainPanRes"), 

			TitledBorder.LEADING, 

			TitledBorder.TOP, 

			new Font("Serif", Font.PLAIN, 14), 

	    		Color.green);



		reslist.setOpaque(true);



		c.gridx=0;

		c.gridy=3;

	    mainPanel.add(resPanel, c);

	    resPanel.setBorder(title6);



	    resPanel.add(reslist);



		

	this.setOpaque(true);

	this.add(mainPanel);

	}

}
```


```
import java.awt.*;

import javax.swing.*;

import javax.swing.border.*;

import javax.swing.plaf.metal.*;

import javax.swing.plaf.metal.*;



public class xxo

{

	

	public static JPanel pane(String xtitle)

	{

		JPanel pane = new JPanel();

	 	TitledBorder title;

		title = BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED, Color.green, Color.green),

		xtitle, 

		TitledBorder.LEADING, 

		TitledBorder.TOP, 

		new Font("Serif", Font.PLAIN, 14), 

		Color.green);

		pane.setBorder(title);

		pane.setBackground(Color.black);

	    	pane.setForeground(Color.green);

		pane.setOpaque(true);

		return pane;

	}

	

	public static JCheckBox jcb(String xtitle, int r, int s, int t, int u)

	{

	//UIManager.put("JCheckBox.selected", Color.green);

	//UIManager.put("JCheckBox.interiorForeground", Color.green);

	//this.setVisible(true);

	JCheckBox a1 = new JCheckBox(xtitle, new CheckBoxIcon());

		a1.setSelected(true);

		a1.setBorder(BorderFactory.createEmptyBorder(r, s, t, u));

		a1.setBackground(Color.black);

	    	a1.setForeground(Color.green);

		a1.setOpaque(true);

		return a1;

	}



	public static JLabel fnummberkey(String fkey)

	{

		JLabel f1;

		f1 = new JLabel(fkey);

		f1.setBackground(Color.black);

		f1.setForeground(Color.green);

		return f1;

	}

	

	public static JComboBox fcheat()

	{

		String[] cheats = {" ", "666", "999"};

		JComboBox f1list = new JComboBox(cheats);

		f1list.setEditable(true);

		ComboBoxRenderer renderer = new ComboBoxRenderer();

		//renderer.setPreferredSize(new Dimension(200, 130));

		f1list.setRenderer(renderer);

		// now a bug

		f1list.setPreferredSize(new Dimension(229, 20));

		//piclist.setAlignmentX(Component.LEFT_ALIGNMENT);

		//piclist.addActionListener(this);

		f1list.setBackground(Color.black);

		f1list.setForeground(Color.green);

		return f1list;

	}



	public static JButton fButton(String bt)

	{

		JButton F1Button = new JButton(bt);

		F1Button.setBackground(Color.black);

		F1Button.setForeground(Color.green);

		//http://java.sun.com/docs/books/tutorial/uiswing/components/border.html thx to Yannix(forum.java.sun.com)

		F1Button.setBorder(BorderFactory.createCompoundBorder(

			BorderFactory.createLineBorder(Color.green), 

			BorderFactory.createEmptyBorder(5,5,5,5)

		));

		return F1Button;

	}

	

	public static class ComboBoxRenderer extends JLabel implements ListCellRenderer 

	{

        	public ComboBoxRenderer() 

        	{

        		setOpaque(true);

        	}

        	

        	public Component getListCellRendererComponent(

                                           JList list,

                                           Object value,

                                           int index,

                                           boolean isSelected,

                                           boolean cellHasFocus) 

		{

			list.setForeground(Color.green);

			list.setBackground(Color.black);

			return this;

		}

        }



	//now tick of checkbox

	private static class CheckBoxIcon implements Icon/*, Serializable*/

    {

        final static int csize = 13;

        public void paintIcon(Component c, Graphics g, int x, int y)

        {

            JCheckBox cb = (JCheckBox) c;

            ButtonModel model = cb.getModel();

 

            // outer bevel

            if( !cb.isBorderPaintedFlat() )

            {

                // Outer top/left

                g.setColor(Color.green);

                g.drawLine(x, y, x+11, y);

                g.drawLine(x, y+1, x, y+11);

 

                // Outer bottom/right

                g.setColor(Color.green);

                g.drawLine(x+12, y, x+12, y+12);

                g.drawLine(x, y+12, x+11, y+12);

 

                // Inner top.left

                g.setColor(Color.green);

                g.drawLine(x+1, y+1, x+10, y+1);

                g.drawLine(x+1, y+2, x+1, y+10);

 

                // Inner bottom/right

                g.setColor(Color.green);

                g.drawLine(x+1, y+11, x+11, y+11);

                g.drawLine(x+11, y+1, x+11, y+10);

 

                // inside box 

                if( (model.isPressed() && model.isArmed()) || !model.isEnabled() )

                {

                    g.setColor(Color.black);

                }

                else

                {

                    g.setColor(Color.black);

                }

                g.fillRect(x+2, y+2, csize-4, csize-4);

            }

            else

            {

                g.setColor(Color.green);

                g.drawRect(x+1, y+1, csize-3, csize-3);

 

                if( (model.isPressed() && model.isArmed()) || !model.isEnabled() )

                {

                    g.setColor(Color.green);

                }

                else

                {

                    g.setColor(Color.green);

                }

                g.fillRect(x+2, y+2, csize-4, csize-4);

            }

 

            if( model.isEnabled() )

            {

                g.setColor(Color.green);

            }

            else

            {

                g.setColor(Color.green);

            }

 

            // paint check

            if( model.isSelected() )

            {

                g.drawLine(x+9, y+3, x+9, y+3);

                g.drawLine(x+8, y+4, x+9, y+4);

                g.drawLine(x+7, y+5, x+9, y+5);

                g.drawLine(x+6, y+6, x+8, y+6);

                g.drawLine(x+3, y+7, x+7, y+7);

                g.drawLine(x+4, y+8, x+6, y+8);

                g.drawLine(x+5, y+9, x+5, y+9);

                g.drawLine(x+3, y+5, x+3, y+5);

                g.drawLine(x+3, y+6, x+4, y+6);

            }

        }

 

        public int getIconWidth()

        {

            return(csize);

        }

 

        public int getIconHeight()

        {

            return(csize);

        }

    }

}
```


```
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;



class SetRes

{

	public void setLoc(Locale loca)

	{

		Locale sprache = loca;

		JComponent.setDefaultLocale(sprache);

		Locale.setDefault(sprache);

		ShockCfg.txt = ResourceBundle.getBundle("resources.MyTextResource", sprache);

                Xerxes.planets.setTitleAt(0, ShockCfg.txt.getString("Maintab"));

		XerxesMain.joystickPanel.setName(ShockCfg.txt.getString("MainPaneJoy"));

                XerxesMain.joystickCheckbox.setText(ShockCfg.txt.getString("MainJoy"));

		XerxesMain.rogerPanel.setName(ShockCfg.txt.getString("MainPaneRog"));

		XerxesMain.rogerCheckbox.setText(ShockCfg.txt.getString("MainRog"));

		XerxesMain.intelPanel.setName(ShockCfg.txt.getString("MainPaneIntel"));

		XerxesMain.intelCheckbox.setText(ShockCfg.txt.getString("MainIntel"));

		XerxesMain.title11.setTitle(ShockCfg.txt.getString("MainPaneLang"));

		XerxesMain.langLabel.setText(ShockCfg.txt.getString("MainLabelLang"));

		idx = XerxesMain.langlist.getSelectedIndex();

		XerxesMain.langlist.removeAllItems();

		XerxesMain.langlist.insertItemAt(ShockCfg.txt.getString("MainDeuLang"), 0);

		XerxesMain.langlist.insertItemAt(ShockCfg.txt.getString("MainEngLang"), 1);

		if(idx==0)

			XerxesMain.langlist.setSelectedItem(ShockCfg.txt.getString("MainDeuLang"));

		if(idx==1)

			XerxesMain.langlist.setSelectedItem(ShockCfg.txt.getString("MainEngLang"));

		XerxesMain.staendePanel.setName(ShockCfg.txt.getString("MainPaneSave"));

                XerxesMain.staendeCheckbox.setText(ShockCfg.txt.getString("MainSave"));

		XerxesMain.swmodePanel.setName(ShockCfg.txt.getString("MainPaneMode"));

		XerxesMain.swmodeCheckbox.setText(ShockCfg.txt.getString("MainMode"));

		XerxesMain.blutPanel.setName(ShockCfg.txt.getString("MainPaneBlut"));

		XerxesMain.blutCheckbox.setText(ShockCfg.txt.getString("MainBlut"));

		XerxesMain.title5.setTitle(ShockCfg.txt.getString("MainPaneShots"));

		XerxesMain.picLabel.setText(ShockCfg.txt.getString("MainLableShots"));

		XerxesMain.picButton.setText(ShockCfg.txt.getString("MainButtonShots"));

		XerxesMain.title6.setTitle(ShockCfg.txt.getString("MainPanRes"));

	}

}
```


----------



## dudu3k (20. Mrz 2008)

oh, jetzt hab ich die xxo.java übersehen :/


----------



## dudu3k (20. Mrz 2008)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Oder lass es alternativ ganz sein, _könntest es evtl. auch mal mit einer nicht oop versuchen._



{quote}Genau! Schon mal d'rüber nachgedacht, es als Comedian zu versuchen?

Ich denke mal, daß deine Talente in diesem Metier eher liegen!  [/quote]

hm struckturierte programmierung und komödiant, danke für die blumen, ich bleib lieber künstler...


----------



## quippy (20. Mrz 2008)

dudu3k hat gesagt.:
			
		

> quippy hat gesagt.:
> 
> 
> 
> ...



Das erklärt noch immer nicht, was "scce" jetzt ist... Super Customer Care Engine?! Wikipedia kennt den Begriff nicht - Google nur als Abkürzung.

Wenn "scce" ein Programmtyp ist, wie z.B. ein MP3-Player, dann macht die Aussage "da dachte ich noch, bei einem scce müßte man das so machen" keinen Sinn - denn Programmierstile und Anwendungstypen haben nichts mit einander zu tun.


SCNR: Du beherrschst es, Deine 5 Jahre Informatikstudium erfolgreich zu verbergen.


----------



## dudu3k (21. Mrz 2008)

ein kurzes program dass den fehler darstell.

kann niemand was zu den static-fehlermeldungen sagen?


----------



## Noar (21. Mrz 2008)

Ich vermute mal, er meint mit scce das, was hier allgemein als "Kurzes, Selbständiges, Kompilierbares Beispiel". Allerdings hat er meiner Meinung nach den Sinn davon nicht so ganz verstanden, wenn ich mir die Menge Code anschaue, die er gepostet hat ...


----------



## ms (21. Mrz 2008)

Noar hat gesagt.:
			
		

> Ich vermute mal, er meint mit scce das, was hier allgemein als "Kurzes, Selbständiges, Kompilierbares Beispiel". Allerdings hat er meiner Meinung nach den Sinn davon nicht so ganz verstanden, wenn ich mir die Menge Code anschaue, die er gepostet hat ...


Vielleicht ist das ja schon die stark gekürzte Fassung.  

ms


----------



## dudu3k (21. Mrz 2008)

Noar hat gesagt.:
			
		

> Ich vermute mal, er meint mit scce das, was hier allgemein als "Kurzes, Selbständiges, Kompilierbares Beispiel". Allerdings hat er meiner Meinung nach den Sinn davon nicht so ganz verstanden, wenn ich mir die Menge Code anschaue, die er gepostet hat ...



ja, das mein ich! ich hab den sinn schon verstanden, nu das scce ist noch nicht fertig, es hängt an den static fehlermeldungen!


----------



## ms (21. Mrz 2008)

```
public class Test {

    int i = 7;

    public static void main(String[] args) {
        System.out.println(i);
    }

}
```
Hier dein scce mit dem Compilefehler:
Cannot make a static reference to the non-static field i Test.java line 8

ms


----------



## dudu3k (21. Mrz 2008)

wenn du das mit meinem scce und dem programm vergleichen würdest, hättest du gesehen, dass das absolut nicht passt!
ich bin trotzdem für jed hilfe dankbar!


----------



## ms (21. Mrz 2008)

dudu3k hat gesagt.:
			
		

> wenn du das mit meinem scce und dem programm vergleichen würdest, hättest du gesehen, dass das absolut nicht passt!


Nur weil ich keine 800 Zeilen Code gepostet habe?
Solange du dein Problem nicht auf einen 10-Zeiler reduzierst wirds schwierig.
Abgesehen davon glaube ich nicht, dass das von mir gepostete Beispiel so weit von deinem Problem entfernt ist.

ms


----------



## dudu3k (21. Mrz 2008)

die fehlermeldung ist eine ganz andere und ausserdem sind es zwei! dazu tritt der fehler nich in der main funktion auf.


----------



## ms (21. Mrz 2008)

dudu3k hat gesagt.:
			
		

> die fehlermeldung ist eine ganz andere


Welche Java-Version verwendest du?



			
				dudu3k hat gesagt.:
			
		

> und ausserdem sind es zwei!


Eins nach dem anderen.



			
				dudu3k hat gesagt.:
			
		

> dazu tritt der fehler nich in der main funktion auf.


Das ist völlig egal, es geht ums Prinzip.

ms


----------



## dudu3k (21. Mrz 2008)

jdk 1.7.0 ea b24 von java.net


----------



## Noar (21. Mrz 2008)

Also mal ganz ehrlich: Warum verwendest du als Java-Anfänger* denn einen Snapshot von einer kommenden Version?

Hat zwar mit deinem Fehler (vermutlich) nix zu tun (hab mich aber nicht wirklich durch dein ellenlanges Beispiel gequält), ist aber nicht wirklich hilfreich. Da das bisher kaum jemand verwendet, wird du da bei Problemen ziemlich im Regen stehen.

Verwende doch die etablierte Version 1.6.

* mein rein subjektives Empfinden


----------



## dudu3k (21. Mrz 2008)

ja, stimmt! das thema hat ich im anderen thread auch schon! ich dachte für ein open source proram muss ich die version nehmen, da es sonst unter der sun lizens steht. aber jetzt ist es egal. mit der version hab ich aber gute erfahrungen gmacht, bis jetzt! mein program ist ja ganz einfach gehalten und läuft mit der version ohne probleme!
ob ich nach etlichen jahren grundstudium noch anfänger bin, weiss ich nicht, aber ich hab die fehler halt gepostet, weil ich aus der faq nicht so ganz schlau werd...

konkret sagt mir die erst fehlermeldung nichts! eine klasse die angeblich im statischen kontext läuft? da ist nirgends ein static!?
und die häufigen fehlermeldungen über variablen. klar kann ich alle static machen, aber das soll man ja laut dem forum hier nicht!? also was mach ich dann?


----------



## Janus (21. Mrz 2008)

ich hab den code mal kurz überflogen und kann dazu nur eins sagen: grauenvoll. lauter statics und ne tonne code in die main gekloppt. dass das vor allem bei GUI anwendungen fehler ohne ende produziert, ist wenig überraschend.


----------



## dudu3k (22. Mrz 2008)

code in der main? da musst du was anderes gelesen haben! auserdem brauch ich die statics zum teil, da manche variablen nur einmal vorkommen dürfen!


----------



## dudu3k (22. Mrz 2008)

die frage ist doch eigentlich ganz einfach! muss in der classe SetRes alles static sein oder kann man das auch anders lösen?


----------



## dudu3k (22. Mrz 2008)

ich hab jetzt einfach ales static gemacht und es löppt! lag es an der xxo.java?


----------



## dudu3k (22. Mrz 2008)

hier:

http://www.java-forum.org/de/viewtopic.php?t=61587

ein thread über mein erstes oop. mir ist aufgefallen dass du wahrscheinlich die XerxesMain meinst Janus! ich hab dort mal die frage gestellt ob man es auch abstrakt oder mit model umschreiben könnte, da es ja bis jetzt struckturiert ist.


----------



## dudu3k (22. Mrz 2008)

hm scheint ja nicht viele experten für static hier zu geben!
also wenn mir jemand sagen kann wie ich das static in der XerxesMain weg bekomme, und ob das an der xxo liegt, wäre ich dankbar. mein program läuft zwar so aber es wird ja einen guten grund geben warum man static nicht verwendet!
ich hab hier noch mal eine englische, überarbeitete vesion des scce programs:
http://forum.java.sun.com/thread.jspa?threadID=5275535
das scce ist am ende des threads und danach kommt noch ein post, in dem vier dateien noch mal gekürzt wurden! der letzte post von mir bereinigt auch einen kleinen fehler in der xxo, das werde ich jetzt aber schnell verbessern, so das die letzten zwei code-posts zählen! glaub seite 2 und 3!
ich denke auch in der form ist das wirklich ein scce 
danke im vorraus!


----------



## dudu3k (23. Mrz 2008)

hab es noch mal gekürzt und jetzt gehts! 

http://forum.java.sun.com/thread.jspa?messageID=10165985


----------

