JScrollPane oder ähnliches in Java Applet einfügen

  • #1
P

Paule27

Guest
Hallo,

mein Problem ist folgendes: Ich hab mir ein Applet geschrieben, was soweit auch ganz gut funktioniert. Zur Laufzeit des Applets kann man Komponenten (JTextField, JCheckBox usw) hinzufügen. Somit kann es passieren, dass die Größe des Applets größer ist als der sichtbare Bereich im Browser.
Deswegen hab ich nun ein JScrollPane eingefügt. Mein Problem ist nun, dass Button-Klicks seitdem keine Reaktionen mehr verursachen. Hier mein Quellcode:

Code:
public class Editor extends JApplet {
   JPanel activeView; // aktives JPanel
   JScrollPane spactiveView;
   
   public void init() {
     activeView = new Login(this);
     spactiveView = new JScrollPane(activeView); // aktives JPanel in JScrollPane einfügen
     getContentPane().add(spactiveView); // JScrollPane einfügen
    
   }
   
   public void changeView(JPanel p) {
     remove(activeView);
     activeView = p;
     spactiveView.add(activeView); // aktives JPanel in JScrollPane einfügen
     getContentPane().add(spactiveView); // JScrollPane einfügen
     validate();
   }
  }

Die Klasse Login erbt von JPanel. Ich hab denn noch weitere JPanels die durch Button-Klicks angezeigt werden. Der Code dafür sieht so aus:

Code:
public class Login extends JPanel implements ActionListener {
   JLabel username;
   JLabel password;
   JTextField nName;
   JPasswordField pwort;
   JButton login;
   JButton reg;
   Editor owner;

   public Login(Editor owner) {
     this.owner = owner;

     setLayout(new GridLayout(3,2,10,10));
     setPreferredSize(new Dimension(400, 200));
    
     username = new JLabel(Nutzername: );
     password = new JLabel(Passwort: );
     nName = new JTextField(10);
     pwort = new JPasswordField(10);
     login = new JButton(Login);
     reg = new JButton(neu registrieren);
    
     login.addActionListener(this);
     reg.addActionListener(this);
    
     add(username);
     add(nName);
     add(password);
     add(pwort);
     add(login);
     add(reg);
   }
    
   public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource(); 
     if (source == login)
      owner.changeView(new MainWindow(owner)); // MainWindow ist dann ein weiteres JPanel
   }
  }

Wie gesagt, seitdem ich das JScrollPane eingefügt habe, tut sich nichts mehr, wenn ich auf den login-Button klicke.
Muss ich denn das JScrollPane mit übergeben? Oder wo liegt der Fehler.

Vielleicht kann mir ja jemand helfen, wäre nett. Vielen Dank schon einmal im Voraus!

Gruß Paule!!
 
  • #2
Ich bin's wieder. Hab jetzt mal bisschen was verändert.

Dabei entstand ne gute und ne schlechte Nachricht. Die gute: Die Buttons funktionieren wieder. Die schlechte: Ne Scroll-Leiste hab ich immer noch nicht :(

Hier mein veränderter Code:

Code:
public class Editor extends JApplet {
   JPanel activeView; // aktives JPanel
   
   
   public void init() {
     activeView = new Login(this);
     getContentPane().add(activeView); // JPanel einfügen
    
   }
   
   public void changeView(JPanel p) {
     remove(activeView);
     activeView = p;
     getContentPane().add(activeView); // JPanel einfügen
     validate();
   }
  }

Code:
public class Login extends JPanel implements ActionListener {
   JLabel username;
   JLabel password;
   JTextField nName;
   JPasswordField pwort;
   JButton login;
   JButton reg;
   Editor owner;
   JPanel LoginPanel; // in dieses JPanel werden alle Komponenten eingefügt

   public Login(Editor owner) {
     this.owner = owner;
     LoginPanel = new JPanel();

     LoginPanel.setLayout(new GridLayout(3,2,10,10));
     setPreferredSize(new Dimension(400, 200));
    
    
     username = new JLabel(Nutzername: );
     password = new JLabel(Passwort: );
     nName = new JTextField(10);
     pwort = new JPasswordField(10);
     login = new JButton(Login);
     reg = new JButton(neu registrieren);
    
     login.addActionListener(this);
     reg.addActionListener(this);
    
     LoginPanel.add(username);
     LoginPanel.add(nName);
     LoginPanel.add(password);
     LoginPanel.add(pwort);
     LoginPanel.add(login);
     LoginPanel.add(reg);
    
     add(new JScrollPane(LoginPanel)); //hier wird das JScrollPane eingefügt
    
    
   }
    
   public void actionPerformed(ActionEvent evt) {
    Object source = evt.getSource(); 
     if (source == login)
      owner.changeView(new MainWindow(owner));
   }
  }


Tja und nun die Frage: Warum erscheint kein Scroll-Balken?? Ich kann die Applet-Größe so klein machen wie ich will, es erscheint kein Balken.

Bitte helft mir !!

Paule!
 
Thema:

JScrollPane oder ähnliches in Java Applet einfügen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.840
Beiträge
707.963
Mitglieder
51.494
Neuestes Mitglied
Flensburg45
Oben