List |
In dit voorbeeld worden gegevens van de ene list naar de andere gekopieerd
// AwtList.java
// Kopieert items van een srcList naar destList en omgekeerd
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class AwtList extends Applet implements ItemListener, ActionListener {
private List srcList, destList;
private Button copyButton, backButton;
final static int AANTAL = 10;
public void init() {
// een lijst met 5 zichtbare elementen
// meervoudige selectie (true)
srcList = new List( 5, true );
// een lijst met default 4 zichtbare elementen
// meervoudige selectie
destList = new List( 0, true );
copyButton = new Button( ">>" );
backButton = new Button( "<<" );
// voeg items toe aan srcList
for (int i = 0; i < AANTAL ; i++)
srcList.addItem( "item" + i );
// voeg de list en button toe aan de applet
add( srcList );
add( copyButton );
add( backButton );
add( destList );
// meld de knoppen en lijsten aan bij hun eventlisteners
copyButton.addActionListener(this);
backButton.addActionListener(this);
srcList.addItemListener(this);
destList.addItemListener(this);
}
// hier worden de knoppen afgehandeld
public void actionPerformed ( ActionEvent e ) {
if ( e.getSource() == copyButton )
move(srcList, destList);
else if ( e.getSource() == backButton)
move (destList, srcList);
}
// als in ene list wordt geselecteerd dan wordt de andere de deselecteerd
public void itemStateChanged( ItemEvent e ) {
if ( e.getSource() == srcList )
for (int i = 0; i < destList.getItemCount(); i++)
destList.deselect(i);
else if ( e.getSource() == destList )
for (int i = 0; i < srcList.getItemCount(); i++)
srcList.deselect(i);
}
void move(List src, List dest) {
String[] items = src.getSelectedItems();
int [] indexes = src.getSelectedIndexes();
for (int i = 0; i< items.length; i++)
dest.addItem(items[i]);
for (int i = 0; i < indexes.length; i++)
src.delItem(indexes[i]);
}
}
|
Een applet met een ItemListener voor de List en een ActionListener voor
de Button.
srcList = new List( 5, true ); for (int i = 0; i < AANTAL ; i++) srcList.addItem( "item" + i ); destList = new List( 0, true );De knoppen en lijsten worden aangemeld bij de LayoutManager en bij hun respectievelijke EventListeners ActionListener en ItemListener.
copyButton = new Button( ">>" ); backButton = new Button( "<<" ); add( srcList ); add( copyButton ); add( backButton ); add( destList ); copyButton.addActionListener(this); backButton.addActionListener(this); srcList.addItemListener(this); destList.addItemListener(this); }
public void actionPerformed ( ActionEvent e ) {
if ( e.getSource() == copyButton )
move(srcList, destList);
else if ( e.getSource() == backButton)
move (destList, srcList);
}
void move(List src, List dest) {
String[] items = src.getSelectedItems();
int [] indexes = src.getSelectedIndexes();
for (int i = 0; i< items.length; i++)
dest.addItem(items[i]);
for (int i = 0; i < indexes.length; i++)
src.delItem(indexes[i]);
}
De dubbelklik genereert een ActionEvent, die is hier niet afgehandeld.
public void itemStateChanged( ItemEvent e ) {
if ( e.getSource() == srcList )
for (int i = 0; i < destList.getItemCount(); i++)
destList.deselect(i);
else if ( e.getSource() == destList )
for (int i = 0; i < srcList.getItemCount(); i++)
srcList.deselect(i);
}
deselect() lijkt op het eerste gezicht niet nodig, maar de gebruiker
verwacht dat als hij naar de andere List verhuisd de activiteiten in de
ene List onderbroken worden. Dus dat eventuele gemaakte selectie ongedaan
gemaakt worden. Hiervoor worden in een for-lus alle elementen van niet
aangeklikte List vrijgegeven
| public class List | extends Component |
| public List();
public List(int rows, boolean multipleSelections); |
constructors |
| addItem(String item); | voeg een element toe aan het einde |
| addItem(String item, int index); | |
| delItem(int position);
remove() |
verwijder een element |
| removeAll(); | verwijder alle elementen |
| public String getItem(int index); | haal een element met de index |
| public int getRows(); | haal het aantal rijen in de lijst |
| public int countItems(); | tel het aantal elementen |
| public void replaceItem(String st, int index) | vervang een element |
| public void deselect(int index); | deselecteer deze index |
| public int getSelectedIndex(); | haal de geselecteerd index |
| public int[] getSelectedIndexes(); | haal de geselecteerde indices |
| public String getSelectedItem(); | haal de geselecteerde tekst |
| public String[] getSelectedItems(); | haal de geselecteerde teksten |
| public boolean isIndexSelected(int index); | is deze index geselecteerd? |
| public void select(int index) | selecteer deze index |
| public void setMultipleMode(boolean v) | stel meervoudige selectie in |
| public boolean isMultipleMode(); | is meervoudige selectie mogelijk? |
| public void makeVisible(int index) | schuif de lijst zo dat dit element zichtbaar wordt |
| public int getVisibleIndex(); | haal de index van element dat het laatste zichtbaar was |
| public Dimension getMinimumSize() | bereken de minimale afmeting |
| public Dimension getPreferredSize() | bereken de gewenste afmeting |