JTextField nicht nutzbar, wohl ein Panel Problem? (Ich vs. GUI)

wissensdurstig

Grünschnabel
Hallo,

ich sitze nun seit mehren Tagen an meinem Java Programm und habe viele Probleme schon gelöst. Doch nun lauf ich gegen die Wand:

Ich habe ein Fenster erstellt mit JWindow, damit ich keine extra Zeug habe wie Titelleiste usw. Denn ich möchte das mein Programm auf Windows, MacOSX und Linux so weit wie möglich gleich aussieht.

Hier mein Programm:

Code:
/* Noetige Kopfdateien für die grafische Oberfläche
* ***********************************************
*/
import java.awt.*;	// Grafik zeugs
import java.awt.event.*;
import javax.swing.*;
 
/* Klasse client
* ****************
*/
public class client extends JWindow {
 
// Die Elemente für die Oberflaeche
private JWindow frame_fenster = new JWindow();
private JTextField text_ip	= new JTextField();
private JLabel label_beenden = new JLabel(new ImageIcon("MEINBEEENDE_BUTTON.gif")); 
private JLabel label_hintergrund = new JLabel(new ImageIcon("MEIN_HINTERGRUND.gif")); 
 
 
public client(String Titel, int breite, int hoehe) {
 
Container panel = getContentPane(); // Kontainer erstellen
panel.setLayout(null);						// Layout festlegen
 
text_ip.setText("localhost");
text_ip.setBounds(100,100,100,30);
panel.add(text_ip);
 
label_beenden.setBounds(678,510,102,31); // Beendenknopf setzen
panel.add(label_beenden);
 
label_hintergrund.setBounds(0,0,800,600); // Hintergrund setzen
panel.add(label_hintergrund);
 
 
 
label_beenden.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
	System.exit(0);
}
});
 
setLocation(100,100);	 // Ort des Geschehens setzene
setSize(breite,hoehe);	 // Fenstergrösse einstellen
setVisible(true);			 // Sichtbar machen
 
} // Ende des Konstruktors pdvclient
 
 
 
// Main-Methode der Klasse client
public static void main(String[] args) {
pdvclient client = new pdvclient ("Client",800,600);
} // Ende der Main-Methode
 
} // Ende der Klasse client

Das Problem:

Das Textfield (text_ip) ist zwar zusehen aber ich kann es nicht anklicken und den Textinhalt verändern.

Fragen:
Liegt das Problem an Ebenen (Panel)? Wie bekomme ich das Problem gelöst?

Freu mich auf angeregte Lösungsvorschläge :)
 
Ich habe da eine Frage:
Du postest oben die Klasse

public class client

aber unten in der main() steht:

pdvclient client = new pdvclient ("Client",800,600);

Ich nehme an es gibt eine Klasse pdvclient, die von client abgeleitet ist und evtl. ein paar Dinge macht, die zum Problem werden. Vor allem weil Du in client das Textfield als private deklarierst und damit in der abgeleiteten Klasse nicht zur Verfügung steht.
 
Hi!

Ich kann dir nicht direkt weiterhelfen, ich hab mir das Zeug mal kopiert und nur die Vererbung geändert, also nicht von JWindow sondern von JFrame erben lassen (und du kannst die Zeile, in der du das JWindow-Objekt erzeugst, auskommentieren, brauchst du eh nicht weil du das Fenster ja über den Konstruktor erzeugst).

Das Witzige dabei ist, dass das Textfeld dann ganz normal nutzbar ist. Du solltest dir JWindow vielleicht nochmal genauer anschauen, da scheint wohl das Problem zu liegen. Genaueres weiß ich aber auch nicht, hatte bis jetzt nur mit JFrames zu tun.

Und du solltest bei Swing immer die Methode pack() aufrufen, in deinem Fall vielleicht vor der Zeile setLocation(100,100).


Gruß und ich hoffe es hat dir wenigstens ein bisschen geholfen!
 
Jap, es lag an JWindow!

Nach weiteren Stunden in google und java doc habe JFrame doch verwendet und
dafür den Weg gefunden das man die Titelleiste doch verschwinden lassen kann.

Für welche die das auch noch nie gesehen haben:

setUndecorated(true); // zaubert die Titelleiste wech vom JFrame


Das mit client und pdvclient, muss ich entschuldigen! Tippfehler beides sollte client sein!
 
Ja, genau, das mit dem setUndecorated(true) wollte ich auch noch gerade hinzufügen, aber hast die Lösung ja selber schon gefunden :eek:)
 
Zurück