tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
696
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Registriert seit
    Feb 2005
    Beiträge
    5
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    
    /* 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
     

  2. #2
    Registriert seit
    Apr 2004
    Ort
    Ruhrgebiet
    Beiträge
    1.582
    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.
     

  3. #3
    Avatar von redwidow
    redwidow redwidow ist offline Rookie
    Registriert seit
    May 2004
    Ort
    Fürth (Bayern)
    Beiträge
    6
    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!
     

  4. #4
    Registriert seit
    Feb 2005
    Beiträge
    5
    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!
     

  5. #5
    Avatar von redwidow
    redwidow redwidow ist offline Rookie
    Registriert seit
    May 2004
    Ort
    Fürth (Bayern)
    Beiträge
    6
    Ja, genau, das mit dem setUndecorated(true) wollte ich auch noch gerade hinzufügen, aber hast die Lösung ja selber schon gefunden :o)
     

Ähnliche Themen

  1. [SUSE 10.2] lvm findetLaufwerk aber es ist nicht nutzbar
    Von mc_gulasch im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 02.12.07, 15:11
  2. MessageBox nicht mehr nutzbar nach DoModal()
    Von Padd_y im Forum VisualStudio & MFC
    Antworten: 5
    Letzter Beitrag: 28.03.07, 21:58
  3. AWT: Panel durch anderes Panel ersetzen. Neuzeichnen-Problem
    Von Semmerl im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 22.05.05, 11:22
  4. Antworten: 4
    Letzter Beitrag: 22.10.04, 11:27
  5. Frohe Weihnachten? - wohl nicht
    Von santin im Forum Smalltalk
    Antworten: 4
    Letzter Beitrag: 08.12.03, 14:09