22. december 2000 - 13:19Der 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.
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).
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() {
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; }
Det kan godt bruges. Jeg manglede bare princippet... :-)
Synes godt om
Ny brugerNybegynder
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.