Avatar billede dax Nybegynder
22. december 2000 - 13:19 Der er 3 kommentarer og
1 løsning

Hvordan fjerner man komponenter fra GridLayout i en Java Applet

Spørgsmålet går ud på, at jeg har en GridLayout som bliver fyldt op med nogle billeder via en funktion der indeholder en for løkke. Efter forløkken tilføjes et ekstra billede.
Derefter skal man kunne køre funktionen igen som skal slette det billede der blev lavet til sidst samtidigt med at den operetter flere billeder og tilføjer det samme billede til sidst.

HJÆLP!!! meget gerne med et eksempel.....
Avatar billede mpultz Nybegynder
22. december 2000 - 19:23 #1
Du kan fjerne komponenter fra et container objekt (f.eks. JPanel) med operationerne remove() og removeAll(). F.eks. hvis du har en JLabel ved navn label så fjerner du den ved remove(label).
Avatar billede dax Nybegynder
24. december 2000 - 21:20 #2
Nedenunder er noget simpelt kode, hvis du kan ændre den, så når man trykker \"button4\", bliver \"button4\" fjernet og der tilføjes 5 ekstra knapper er jeg tilfreds.



import com.sun.java.swing.*;
import java.awt.*;


public class ButtonExample extends JApplet
{
    public void init()
    {


        getContentPane().setLayout(null);
        setSize(700,500);
        getContentPane().add(scrollPane1);
        scrollPane1.setBounds(0,0,700,550);
        panel1.setLayout(new GridLayout(0,1,0,0));
        scrollPane1.add(panel1);
        panel1.setBounds(0,0,696,546);


    int NumberOfQuestions = 10;

    addQuestionPanel(NumberOfQuestions);
    }

    Button button1;

    Panel pnlQ;


    java.awt.ScrollPane scrollPane1 = new java.awt.ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
    java.awt.Panel panel1 = new java.awt.Panel();


    void addQuestionPanel(int NumberOfQuestions)
    {


        for(int i=0; i < 5; i++)
        {
            pnlQ=new Panel();
            button1 = new Button();


            if (i%2==0)
            pnlQ.setBackground(java.awt.Color.green);
            else
            pnlQ.setBackground(java.awt.Color.red);

            pnlQ.setLayout(null);
            pnlQ.setBounds(0,0,100,100);

            button1.setLabel(\"button\"+i);
            pnlQ.add(button1);
            button1.setBounds(0,0,100,100);
            button1.setBackground(java.awt.Color.cyan);
            button1.setForeground(java.awt.Color.black);

            panel1.add(pnlQ);

            }

    }
}
Avatar billede kama Nybegynder
31. december 2000 - 15:49 #3
jeg håber at nedenstående kan bruges. jeg har dog ændret en del hist og her. den fjerner den sidste knap og tilføjer et hold nye knaper.

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

public class ButtonTest extends JApplet {

    public ButtonTest() {
        initComponents ();
    }

    private void initComponents () {
        jPanel1 = new JPanel ();
        jPanel1.setLayout (new GridLayout (0,1,0,0));
        ScrollPane scrollPane1 = new ScrollPane(ScrollPane.SCROLLBARS_AS_NEEDED);
        getContentPane().add(scrollPane1);
        scrollPane1.add(jPanel1);
        addQuestionPanel();
    }
       
    public void addQuestionPanel()
    {
        knapper = new JButton[NUMBEROFQUESTIONS];
        panels = new JPanel[NUMBEROFQUESTIONS];   
        ActionListener kl = new KnapListener();
       
        for (int i = 0; i != knapper.length; i++)
        {   
            panels[i] = new JPanel();
            panels[i].setBounds(0,0,100,100);
               
            knapper[i] = new JButton(\"Knap\"+i);
            knapper[i].addActionListener(kl);
            panels[i].add(knapper[i]);
            if (i%2==0)
            panels[i].setBackground(Color.green);
            else
            panels[i].setBackground(Color.red);
           
            jPanel1.add(panels[i]);           
        }
    }
   
    private class KnapListener implements ActionListener
    {  public void actionPerformed(ActionEvent event)
      {  Object source = event.getSource();
            if (source == knapper[knapper.length-1])
            {
              (knapper[knapper.length-1]).setVisible(false);
              addQuestionPanel();
              validate();
            }
      }
    }
    private final int NUMBEROFQUESTIONS = 10;
    private JButton[] knapper;
    private JPanel[] panels;
    private JPanel jPanel1;
}
Avatar billede dax Nybegynder
31. december 2000 - 16:32 #4
Det kan godt bruges. Jeg manglede bare princippet... :-)
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