Avatar billede pblv Nybegynder
28. august 2003 - 15:54 Der er 8 kommentarer og
1 løsning

Tilføje panel imens applet kører

Heysa,

Vi har en applet, som gerne skulle fungerer som et program, hvor man først vælger noget i et JPanel, dernæst dukker der et nyt JPanel op, baseret på valget.
Vi kan godt få den til at vise det nye JPanel, men når vi så laver jPanel2.add(XXX), kommer de ikke frem.
Vores problem er, at vi ikke på forhånd kan lave disse add's, da det er dynamisk hvad der skal komme frem, alt efter valget i jPanel1.

Nogen der ved hvad der er galt, eller hvad der kan gøres for at fixe det?

Mvh
Os3
Avatar billede arne_v Ekspert
28. august 2003 - 16:02 #1
Laver i en repaint efter at have add'et ?
Avatar billede pblv Nybegynder
28. august 2003 - 16:06 #2
Yeps, det har vi prøvet!
Avatar billede arne_v Ekspert
28. august 2003 - 16:21 #3
Kunne I poste jere skode eller en simpel version af den som
illusterer problemet ?
Avatar billede _carsten Nybegynder
28. august 2003 - 19:14 #4
I stedet for repaint();

Skal i kalde: paintComponents(getGraphics());
Avatar billede pblv Nybegynder
29. august 2003 - 08:52 #5
Hey carsten,

Hvor skal vi kalde den? Og er det ikke noget med den der paintComponents skal overskrives?
Avatar billede pblv Nybegynder
29. august 2003 - 08:58 #6
Hej Arne,

Koden er næsten for omfattende til at poste, men det er meget som beskrevet øverst.
Vi har to klasser, der har arvet fra JPanel.
Det ene bliver tilføjet med det samme fra vores applet, når man så trykke på en bestemt knap, skal det andet JPanel addes, og en masse checkboxe og labels bliver added til det nye JPanel, på baggrund af noget indhold i en database.
Avatar billede _carsten Nybegynder
29. august 2003 - 09:09 #7
Det er jo lidt svært at se, men så prøv efter nedenstående rækkefølge:

1.
    add(nytJPanel);
    super.paint(getGraphics());

2.
    add(nytJPanel);
    MinJApplet.paintComponents(getGraphics());
Avatar billede pblv Nybegynder
29. august 2003 - 09:24 #8
Hey Carsten,

paintComponents(getGraphics()); ser ud til at være svart. Tak skal du have!
Avatar billede pblv Nybegynder
29. august 2003 - 09:29 #9
Men det er mystisk. Den viser den kun, hvis man ændrer på størrelsen af vinduet. Altså ved at trække i AppletWieveren...

Kan du få det her eksempel til at virke, uden man skal trække i vinduet??

package untitled18;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.applet.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
import com.borland.jbcl.layout.*;

public class Applet1 extends Applet
{
  XYLayout xYLayout1 = new XYLayout();
  JPanel jPanel1 = new JPanel();
  JPanel jPanel2 = new JPanel();
  JButton jButton1 = new JButton();
  JToggleButton jToggleButton1 = new JToggleButton();
  JToggleButton jToggleButton2 = new JToggleButton();
  JLabel jLabel1 = new JLabel();
  JTextArea jTextArea1 = new JTextArea();
  //Construct the applet
  public Applet1()
  {
  }
  //Initialize the applet
  public void init()
  {
    try
    {
      jbInit();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }
  //Component initialization
  private void jbInit() throws Exception
  {
    this.setLayout(xYLayout1);
    jPanel1.setBackground(Color.black);
    jPanel2.setBackground(UIManager.getColor("ProgressBar.foreground"));
    jButton1.setText("jButton1");
    jButton1.addMouseListener(new Applet1_jButton1_mouseAdapter(this));
    jToggleButton1.setText("jToggleButton1");
    jToggleButton2.setText("jToggleButton2");
    jLabel1.setText("jLabel1");
    jTextArea1.setText("jTextArea1");
    jPanel1.add(jButton1, null);
    this.add(jPanel1, new XYConstraints(22, 95, 270, 189));
    jPanel2.add(jToggleButton1, null);
    jPanel2.add(jToggleButton2, null);
    jPanel2.add(jLabel1, null);
    jPanel2.add(jTextArea1, null);
  }
  //Get Applet information
  public String getAppletInfo()
  {
    return "Applet Information";
  }
  //Get parameter info
  public String[][] getParameterInfo()
  {
    return null;
  }

  void jButton1_mouseClicked(MouseEvent e)
  {
    this.add(jPanel2, new XYConstraints(119, 11, 262, 132));

    paintComponents(getGraphics());

  }
}

class Applet1_jButton1_mouseAdapter extends java.awt.event.MouseAdapter
{
  Applet1 adaptee;

  Applet1_jButton1_mouseAdapter(Applet1 adaptee)
  {
    this.adaptee = adaptee;
  }
  public void mouseClicked(MouseEvent e)
  {
    adaptee.jButton1_mouseClicked(e);
  }
}
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