Java Applicatie met frames

Status
Niet open voor verdere reacties.

Warranty

Gebruiker
Lid geworden
3 nov 2006
Berichten
100
Hallo, voordat ik mijn vraag plaats hier eerst even mijn code:

Code:
package erusmushuis;

import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JLabel;
import java.awt.*;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;

public class Frame1 extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    JTextField tekstveld = new JTextField();
    JTextField tekstveld2 = new JTextField();
    JButton knop = new JButton("OK");
    
    
    public Frame1() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }

    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {

        contentPane = (JPanel) getContentPane();
        contentPane.setLayout( null );
        setSize(new Dimension(300, 400));
        setTitle("Inloggen");

        contentPane.add(tekstveld);
        tekstveld.setBounds(120, 35, 120, 20);
        
        contentPane.add(tekstveld2);
        tekstveld2.setBounds(120, 60, 120, 20);
        tekstveld2.setEnabled(false);
        
        contentPane.add(knop);
        knop.addActionListener( new KnopHandler() );
        knop.setBounds(130, 90, 70, 25);

    }
    
  class KnopHandler implements ActionListener
  {
      public void actionPerformed( ActionEvent e )
      {
          ?????????
      }
  }
}

Mijn vraag gaat over wat ik op de plaats van de vraagtekens kan zetten. Ik wil namelijk deze frame, als je op de knop drukt, een andere frame laten verschijnen.

Dit lijkt mij heel makkelijk maar ik kan het helemaal nergens vinden! Ik zou heel erg blij zijn met wat hulp. Danku alvast :thumb:

Edit:

Oei vergeet ik zomaar erbij te melden met welke ontwikkelomgeving ik werk. Ik werk met JBuilder 2005, 11.0.236.0.
 
Laatst bewerkt:
Wat voor JFrame wil je laten verschijnen? Dit kan bijvoorbeeld met
Code:
JFrame newFrame = new JFrame("new frame");
newFrame.setSize(...);
newFrame.setVisible(true);
Je kunt natuurlijk ook een andere klasse die uit JFrame erft instantieren.

Verder nog een kleine opmerking: de methode getContentPane() van JFrame heeft een Container als resultaat en geen JPanel. De cast naar een JPanel is dus overbodig :)
 
Nou. Ik bedoel het niet echt op die manier. Ik wil hem naar een bestaande frame linken. Als je op het knopje drukt, dat hij dus die andere frame opent.

Het zal vast ook wel iets zijn van Frame2.setVisible( true ); maar deze letterlijke code is tot nu toe nog niet gelukt. Moet ik de andere frame declareren ofzo?
 
Laatst bewerkt:
Ja, je moet eerst de nieuwe frame aanmaken, declareren dus. Dan kun je hem inderdaad laten zien met setVisible(true); :thumb:
 
Nou.. juist niet. Tenminste.. hoe dan? Geef is een voorbeeldje van 2 frames ofzo. Want het wil juist niet lekker lukken en ben al een tijdje bezig nu :(

Dankje in ieder geval voor je hulp:D

Edit:

Moet ik bijv meerder frames in 1 frame declareren ofzo? Want dat is juist niet de bedoeling, ik heb nu 1 applicatie, met 2 frames eronder als je snapt wat ik bedoel. Frame1 en Frame2. Die wil ik dus aan elkaar koppelen en als het zover is wil ik nog veel meer frames aan elkaar koppelen om een hele applicatie te maken.

Een project voor school..don't ask :p
 
Laatst bewerkt:
Ok, heel klein voorbeeldje:
Code:
... hier alle imports ...

public class Frame2 extends JFrame {}

public class Frame1 extends JFrame {
    ...
    code van jouw klasse Frame1
    ....
    
  class KnopHandler implements ActionListener
  {
      public void actionPerformed( ActionEvent e )
      {
          Frame2 frame2 = new Frame2();
          frame2.setSize(100, 100);
          frame2.setVisible(true);
      }
  }
}
 
Duizend maal dank! :thumb: Het werkt, :cool: !!!

Mijn volgende vraag waar ik morgen waarschijnlijk pas antwoord op krijg :p

Code:
    public void paint( Graphics g ){
        g.drawString("Naam",5,80);
        g.drawString("Wachtwoord",5,105);
    }

Dit heb ik er tussen gezet maar het wilt niet lekker werken. Is er een goede manier om dit te doen ofzo? (Als dit al een foute manier is... )

Ook lukt het me niet om een set.EchoChar( '*' ); te zetten om het wachtwoord als het ware te censoreren met sterretjes *****. In een applet kan dit wel, hoe doe ik dat in een frame binnen een applicatie?

Nogmaals, bij voorbaat dank:)
 
Waarom gebruik je drawString() en niet gewoon een JTextField om een regel tekst weer te geven? Daarin kun je namelijk wel een alternatief karakter opgeven voor een password.
 
Sorry, misschien was ik niet helemaal duidelijk genoeg ^^

Ik had het ook over de JTextField toen ik SetEchochar bedoelde. In een textfield lukt dat dus ook niet. Ik wil een alternatief karakter gebruiken voor een password textfield ja, maar hoe dan? Met SetEchochar lukt het niet.

En over de functie drawString bedoel ik dat die hele functie niet lekker werkt in een frame binnen een applicatie, terwijl dit gewoon lukt in een applet. Misschien ligt dat aan de klasse public void paint?

Ik ben radeloos. :rolleyes:
 
Het klopt inderdaad wel dat een JTextField niet goed werkt voor het weergeven van een password. Swing heeft hiervoor speciaal de klasse JPasswordField, waarvoor het wel goed werkt.

Verder is het niet verstandig om de paint(Graphics g) methode van de JFrame zelf te overriden. Je kunt beter een eigen subklasse van JPanel definieren, daarvan de paint(...) methode overriden en vervolgens een instantie van jouw eigen JPanel subklasse op het JFrame plaatsen.
 
Ahhh oke dankje!

Voor de g.drawString heb ik al wat anders verzonnen: JLabel. Dit werkt erg goed dus. Ik ga straks even de JPasswordField proberen.

Nogmaals dankje.
 
Voor bijna alles wat je op een frame wilt plaatsen is er wel een standaardcomponent. Is die er niet, dan is er altijd de mogelijkheid om een JPanel te gebruiken en daar zelf op te tekenen.
 
Aha, oke, dat is handig om te weten. Dankje. En ik heb eve een nieuw topic gemaakt misschien heb je dat al gezien? Weet jij daar antwoord op? :)
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan