Avatar billede rjung Nybegynder
16. marts 2003 - 10:42 Der er 11 kommentarer og
1 løsning

actionPerformed

Jeg har sat nogel JRadioButtons i en gruppe op på et panet og sat en Listener til hver. Når jeg trykker på en af JRadioButton vil jeg have min actionPerformed til at indsætte et nyt panel. Det går den også, men først når jeg ændre på vinduets størrelse. Hvordan får jeg den til at "opdate" med det samme?
Avatar billede repsak Nybegynder
16. marts 2003 - 10:52 #1
JRadioButtons reagerer på det som hedder ItemListener:
myRButtons.addItemListener(new ItemListener(){
public void itemStateChanged(ItemEvent e){
//...sætninger
}
};
utestet men skulle virke
Avatar billede rjung Nybegynder
16. marts 2003 - 11:07 #2
Lidt i tvivl om hvordan min ItemListener skal se ud. Er det sådan her?
  private class ItemListener implements ActionListener
  {
    public void itemStateChanged(ItemEvent event)
    {
      Object source = event.getSource();

      if (source==eks)
      {
      ...
      }
    }
Avatar billede repsak Nybegynder
16. marts 2003 - 11:13 #3
Næsten... jeg pjejer dog ikke at bruge actionListener til radioknapper. Håber at du kan følge dette: :-)
class MyClass implements ItemListener{
  //dine attributter inkl. radioklapper
  MyClass(){
    radio1.addItemListener(this);
  }
  public void itemStateChanged(ItemEvent e){
    if(e.getSource() == radio1){
      //Do something
    }
    else if(e.getSource() == radio2){
      ....
    }
  }
}
Avatar billede rjung Nybegynder
16. marts 2003 - 11:36 #4
Kan man implementer ItemListener hvis man også extender JPanel. Den siger at den ikke kan addItemListener(MyClass) når jeg skriver radio1.addItemListener(this);
.
Avatar billede repsak Nybegynder
16. marts 2003 - 11:40 #5
I java kan du extends (arve) fra én klasse men implementere uendelig antal interfaces... så svaret er JA...
Ellers post hele din kode hvis det stadig ikke virker
Avatar billede rjung Nybegynder
16. marts 2003 - 11:50 #6
Lidt forenklet så den er lettere at overskue ser den sådan ud:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class TestPanel extends JPanel implements ItemListener
{
  private JPanel panel, panel2;
  private JRadioButton x,y,z;
  private ButtonGroup group;

  public TestPanel(JPanel panel_)
  {
    panel = panel_;
    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

    panel2 = new JPanel();

    x = new JRadioButton("x");
    y= new JRadioButton("y");
    z= new JRadioButton("z");
   
    group = new ButtonGroup();

    group.add(x);
    group.add(y);
    group.add(z);

    panel2.add(x);
    panel2.add(y);
    panel2.add(z);

    add(panel2);

    ItemListener listener = new ItemListener();

    x.addItemListener(this);
    y.addItemListener(this);
    z.addItemListener(this);


  }
  private class ItemListener implements ActionListener
  {
    public void itemStateChanged(ItemEvent event)
    {

      if (event.getSource()==x)
      {
      }
    }
  }
}
Avatar billede repsak Nybegynder
16. marts 2003 - 12:01 #7
Dette kan jo laves på mange måder... men dette kører... Se godt efter hvad jeg har ændret så du øger din egen forståelse :-)

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

public class TestPanel extends JPanel{

  private JPanel panel, panel2;
  private JRadioButton x,y,z;
  private ButtonGroup group;

  public TestPanel(JPanel panel_)
  {
    panel = panel_;
    setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

    panel2 = new JPanel();

    x = new JRadioButton("x");
    y= new JRadioButton("y");
    z= new JRadioButton("z");

    group = new ButtonGroup();

    group.add(x);
    group.add(y);
    group.add(z);

    panel2.add(x);
    panel2.add(y);
    panel2.add(z);

    add(panel2);

    ItemHandler listener = new ItemHandler();

    x.addItemListener(listener);
    y.addItemListener(listener);
    z.addItemListener(listener);


  }
  private class ItemHandler implements ItemListener
  {
    public void itemStateChanged(ItemEvent event)
    {

      if (event.getSource()==x)
      {
      }
    }
  }
}
Avatar billede rjung Nybegynder
16. marts 2003 - 12:03 #8
Mange tak
Avatar billede rjung Nybegynder
16. marts 2003 - 12:15 #9
Men hov det opdaterer stadig først når jeg ændre på vinduet???
Avatar billede repsak Nybegynder
16. marts 2003 - 20:53 #10
Hmm underligt kan du ikke poste hele dit program så kan jeg lige se på det imorgen (mandag)
Avatar billede rjung Nybegynder
16. marts 2003 - 21:33 #11
Jeg fandt ud af hvordan man skulle gøre. Et lille show(); hjalp. Tak for din hjælp.
Avatar billede repsak Nybegynder
16. marts 2003 - 21:37 #12
Så lidt... Godt at du fandt ud af det :-)
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