---
title: "Knapp som visar och döljer textfält?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/76874-knapp-som-visar-och-döljer-textfält"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Poppe25"
published: "2003-05-14T07:48:18.000Z"
updated: "2003-05-15T06:14:07.000Z"
replies: 5
views: 299
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/76874-knapp-som-visar-och-döljer-textfält"
---

# Knapp som visar och döljer textfält?

## #1 — Poppe25, 2003-05-14T07:48Z

Hej, hur skriver man en klass som skapar ett JFrame-fönster innehållandes en knapp som visar och döljer ett textfält (eller annan komponent)?

Permalänk: https://www.webforum.nu/p/76874

## #2 — jme, 2003-05-14T13:33Z

Den här klassen skapar en JButton samt en JTextArea.
Om du trycker på knappen så visas/göms textarean...

```php

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JFrame implements ActionListener
{
	JButton btn;
	
	JTextArea area;
	
	boolean show = true;
	
	public Test()
	
	{
		super();
		
		btn = new JButton("Tryck mig!");
		btn.addActionListener(this);
		
		getContentPane().add(btn, BorderLayout.NORTH);	
		
		area = new JTextArea();
		
		getContentPane().add(area, BorderLayout.CENTER);
		setBounds(0,0, 800,600);
		setVisible(true);
		
		
	}
	
	public void actionPerformed(ActionEvent e)
	{
		JButton src = (JButton)e.getSource();
		
		if(src.equals(btn) )
		{
			if(show == true)
			{
				area.setVisible(false);
				show = false;	
			}
			else
			{
				area.setVisible(true);
				show = true;
			}
		}	
	}
	
	public static void main(String[] arsg)
	{
		new Test();	
	}
			
}
```

Permalänk: https://www.webforum.nu/p/1048970

## #3 — Poppe25, 2003-05-14T15:06Z

Tack, fungerar perfekt. Nu har jag hört att ett textfält kan ha flera särskilda lyssnare, säg om jag vill att när man dubbelklickar på textfältet så försvinner det, och när jag trycker på knappen så dyker textfältet upp, hur skulle det se ut?

Permalänk: https://www.webforum.nu/p/1049058

## #4 — jme, 2003-05-14T15:48Z

Jepp, rätt så enkelt.

Du får helt enkelt implementera interface:t MouseListener och dessutom implementera dess metoder:

Du kan implementera flera interface i samma klass som du separerar med ett komma-tecken:

```php
public class Olle implements InterfaceX, InterfaceY osv...
{

}
```

```php
public void mouseClicked(MouseEvent e)  {  }
public void mouseEntered(MouseEvent e)  { }
public void mouseExited(MouseEvent e) { }
public void mousePressed(MouseEvent e) 
{ 

}
public void mouseReleased(MouseEvent e)  { }
```

sedan så måste du koppla MouseListener till den valda objektet, dvs JTextArea area:

area.addMouseListener(this);

Några ändringar måste du göra i koden;

I metoden mousePressed() så måste du lägga in några rader för att göra textarean osynlig. Detta gör du med:

area.setVisible(false);

Om du vill att textarean döljs enbart om man dubbel-klickar så kan du anropa metoden getClickCount() som du hittar in variabeln MouseEvent e som du hittar som argument i metoden mousePressed():

if(e.getClickCount() == 2)
{
// dölj textarean...
}

sedan så måste du ändra i metoden actionPerformed():

area.setVisible(true);

Nu så fungerar denna ActionListener enbart med knappen btn. 

Vill du att samma lyssnare skall kunna lyssna på helt olika objekt så måste du i metoden actionPerformed() först kontrollera vad det är för typ av objekt just då och då kan du göra såhär

```php

	public void actionPerformed(ActionEvent e)
	{
		Object o = (Object)e.getSource();
		
                                // är det en knapp?
		if(o instanceof JButton)
		{
			JButton src = (JButton)o;
			if(src.equals(btn) )
			{
				area.setVisible(true);
			}	
		}
		// eller är det en JPanel?
		if(o instanceof JPanel)
		{
			JPanel src = (JPanel)o;
			
			
		}
	}
```

Denna exempel fungerar givetvis bara ifall du har skapat en JPanel och som till du har kopplat en MouseListener till.

Permalänk: https://www.webforum.nu/p/1049088

## #5 — Phorpher, 2003-05-14T20:28Z

Buttons kan du sätta actionCommand på och på det sättet identifiera vilken knapp som triggade actionPerformed.

```php
button.setActionCommand("HIDE");

...

public void actionPerformed(ActionEvent e)
{
    if(e.getActionCommand().equals("HIDE"))
    {
        ...
    }
}
```

Permalänk: https://www.webforum.nu/p/1049467

## #6 — Poppe25, 2003-05-15T06:14Z

Stort tack för hjälpen!
Det fungerar utmärkt.

Permalänk: https://www.webforum.nu/p/1049715

---

Tråden på webben: https://www.webforum.nu/amne/java/76874-knapp-som-visar-och-döljer-textfält
