ja er legt an.
das was du da machen willst hat eigentlich keinen tieferen Sinn es gibt etwas das nennt sich statischer Initialisierer (glaub das es so komisch war) das könnte man ungefähr mit dem vergleichen was du da vor hast das sieht dann so aus
class klass{
static{
System.out.println("huhu");
}
}
das wird einmal beim ersten Aufruf der Klasse gemacht
Hmm also ich glaub ich bin jetzt wirklich zu müde und sollte schlafen gehen, sonst bringe ich noch alles durcheinander. :twisted:
Habe aber noch eine letze Frage. Ich habe hier mein Programm. Ich habe 2 Klassen die gleich heißen und gleiche Methode besitzen. Jetzt wollte ich testen, was passieren wird, wenn ich 2 dieser Klassen in meiner Main() benutze, ob das überhaupt geht.
package de.begruessung;
public class Begruessung {
void hallo() {
System.out.println("Ich bin die de.begruessung.Begruessung Klasse");
}
}
public class Begruessung {
public void hallo() {
System.out.println("Ich bin die default-Begruessung Klasse");
}
}
import de.begruessung.Begruessung;;
public class MainKlasse {
public static void main(String[] args) {
new Begruessung().hallo();
}
}
Als Ausgabe nimmt er: “Ich bin die de.begruessung.Begruessung Klasse”. Wenn ich import auskommentiere dann nimmt er dann "“Ich bin die default-Begruessung Klasse”. Warum? Solange import da ist, sieht er die Klasse aus dem default Paket nicht. Wenn das aber 2 nicht dafault Pakete sind, wie entscheidet er welche Klasse er nimmt und welche nicht? Ich weiss dass so ein Fall wahrscheinlich nie auftretten wird, aber trotzdem würde ich mich das interessieren.
der Klassenname setzt sich immer aus dem Namen und dem Packagenamen zusammen zwei mit den komplett gleichen Namen sind nicht erlaubt bzw das gibt riesen Probleme
ansonsten muss halt bei einer Klasse der Packagename mit davor geschrieben werden
Allerdings gibt es nicht nur die static initializer sonden auch die ähm anderen - ich weiß nicht wie die heißen, das ist noch schlechterer Stil, aber möglich:
package de.begruessung;
public class Begruessung {
{
System.out.println("Ich bin die de.begruessung.Begruessung Klasse");
}
}
Dieser Code wird aufgerufen, wenn auch die Variablen eines neuen Objekts gemacht werden. Allerdings ist hier eindeutig der Konstruktor vorzuziehen, dann hat man alles auf einen Blick.
Edit: Ich hab lang gebraucht bis ich das geschrieben hab Bezieht sich natürlich noch auf die erste Frage.
Edit2: Man sollte noch anmerken, dass es zumindest eine Stelle gibt, wo dieser Initializer seine Existenzberechtigung hat. Anonyme Klassen haben keinen Konstruktor - also geht es manchmal nicht anders Aber so komplizierte anonyme Klassen sollte man eigentlich zu inneren Klassen oder so machen.
Ne das ist was anderes, die sind nicht static. Schau mal den Code an:
public class Test
{
{
System.out.println("here");
}
public static void main(String[] args)
{
System.out.println("lalala");
new Test();
System.out.println("lalala2");
new Test();
}
}
Ich will diese Komponente übereinander positionieren. Wie kann ich das machen? Mit Grid klappt das irgendwie nicht, obwohl ich 4 Zeilen und 1 Spalte eingegeben habe, sieht das wie 2 Zeilen und 2 Spalten aus.
[label ][field ]
[button][label2]
Ich will aber so haben:
[label ]
[field ]
[button]
[label2]
Oder gibt es vieleicht besseren LayoutManager der so was machen kann?
GridBagLayout find ich bei dem Bsp wie mit Kanonen auf Spatzen schiessen… TableLayout ist intuitiver, aber fuer ein einfaches an einer Achse ausgerichtetes Layout wuerde ich immer noch das einfach BoxLayout nehmen…
wobei ich nicht versteh warum es bei dir nicht klappt… das hier klappt
public class Test extends JFrame{
public Test() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,300);
Container c = getContentPane();
c.setLayout(new GridLayout(4,1));
c.add(new JLabel("Hallo"));
c.add(new JButton("Why"));
c.add(new JTextField());
c.add(new JLabel("Alwazys"));
setVisible(true);
}
public static void main(String[] args) throws Exception {
new Test();
}
}
also soweit ich das beurteilen kann ist das TableLayout genauso wie das GridBagLayout nur das man dafür externe Libs braucht, wobei ich zugeben muss das ich diesen Eindruck nur aus Blicken in fremden Code hab ich selbst hab das noch nie benutzt.
Also ich fand das TableLayout viel verwirrender. Und der Herr swerflash hat 100% noch nicht mit einer externen Lib gearbeitet Ihr dürft nun raten was seine nächste Frage sein wird