Avatar billede ozrob Nybegynder
21. maj 2004 - 15:02 Der er 11 kommentarer og
1 løsning

JTextField automatisk fjern indhold

Er det muligt at lave en JTextField sådan at når man trykker på det med musen, så forsvinder teksten?
f.eks. Jeg har lavet et JTextField hvori der fra starten står indsæt nummer her, og når brugeren så trykker, så skal teksten forsvinde. Hvordan??:-)
Avatar billede _carsten Nybegynder
21. maj 2004 - 15:06 #1
Du adder en mouseListener til feltet og bruger setText("");
Avatar billede _carsten Nybegynder
21. maj 2004 - 15:09 #2
public class Exp500877 extends javax.swing.JFrame {
   
    public Exp500877() {
        initComponents();
    }

    private void initComponents() {
        jTextField1 = new javax.swing.JTextField();

        getContentPane().setLayout(new java.awt.FlowLayout());

        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        jTextField1.setText("Nummeret skrives her");
        jTextField1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                fjernText(evt);
            }
        });

        getContentPane().add(jTextField1);

        pack();
    }

    private void fjernText(java.awt.event.MouseEvent evt) {
        jTextField1.setText("");
    }

    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new Exp500877().show();
    }

    private javax.swing.JTextField jTextField1;
}
Avatar billede ozrob Nybegynder
21. maj 2004 - 15:13 #3
Kan jeg både have en mouselistener og actionlistener metode?
Avatar billede _carsten Nybegynder
21. maj 2004 - 15:14 #4
Ja - Du kan både mouselistener og actionlistener på samme JTextField
Avatar billede ozrob Nybegynder
21. maj 2004 - 15:15 #5
cool tak
Avatar billede ozrob Nybegynder
21. maj 2004 - 16:13 #6
Jeg synes ikke rigtigt jeg kan få det til at virke i mit program, da min kode er ret anderledes end din. Min kode ser således ud:

public class Gui extends JFrame implements ActionListener
{
private JTextField IndsætNavn;
  public Gui()
  {
    setSize(300,300);
    setResizable(false);
    Container c= getContentPane();
    c.setLayout(null);

    IndsætNavn = new JTextField("Indsæt navn");
    IndsætNavn.setBounds(25,110,100,25);
    c.add(IndsætNavn);
    }
}

Udover det har jeg nogle andre ting. bl.a. nogle knapper og en actionPerformed klasse.
Avatar billede ozrob Nybegynder
21. maj 2004 - 16:15 #7
actionPerformed metode ikke klasse
Avatar billede _carsten Nybegynder
21. maj 2004 - 16:16 #8
Sådan

public class Gui extends JFrame implements ActionListener
{
private JTextField IndsætNavn;
  public Gui()
  {
    setSize(300,300);
    setResizable(false);
    Container c= getContentPane();
    c.setLayout(null);

    IndsætNavn = new JTextField("Indsæt navn");
    IndsætNavn.setBounds(25,110,100,25);
    IndsætNavn.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                IndsætNavn.setText("");
            }
        });
    c.add(IndsætNavn);
    }
}



        jTextField1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                fjernText(evt);
            }
        });
Avatar billede _carsten Nybegynder
21. maj 2004 - 16:17 #9
skal selvfølge ikke copy/paste fejl fra min side
        jTextField1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                fjernText(evt);
            }
        });
Avatar billede ozrob Nybegynder
21. maj 2004 - 16:23 #10
hmmm oki... Nu virker det! Tak skal du have. Lige en sidste ting...Er det ikke muligt at samle alle "mouse actions" i en metode, ligesom actionPerformed ??? - Hvis nu f.eks. man har 10 forskellige mouse events
Avatar billede _carsten Nybegynder
21. maj 2004 - 16:28 #11
Ja - nej

Du kan bruge MouseAdapter() som her og implementere de metoder du har behov for
eller implementere MouseListener interfacet i klassen

    IndsætNavn.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                IndsætNavn.setText("");
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
            public void mouseEnter(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
            public void mouseExit(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
        });



MouseListener interfacet kræver at samtlige metoder er implementeret, det gør MouseAdapter ikke
public class A.... implements MouseListener{

            public void mousePressed(java.awt.event.MouseEvent evt) {
                IndsætNavn.setText("");
            }
            public void mouseReleased(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
            public void mouseEnter(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }
            public void mouseExit(java.awt.event.MouseEvent evt) {
                // bla .. bla..
            }

}
Avatar billede _carsten Nybegynder
21. maj 2004 - 16:32 #12
Selvfølgelig kan du godt gøre den her
public class A.... implements MouseListener, MouseMotionListener, MouseWheelListener{

Kræver bare en masse arbejde med at implementere metoderne og er der ikke brug metoderne, så anvend Adapter klasserne.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester