Java Tutorial/SWT/List
Версия от 17:44, 31 мая 2010; (обсуждение)
Содержание
- 1 Copying Lists: public static void copy(List dest, List src)
- 2 Create a List with a vertical ScrollBar and Add a bunch of items to it
- 3 Create a multiple-selection list
- 4 Create a single-selection list and add items
- 5 Introducing List and List Styles
- 6 List Item Single Selection
- 7 Make List Scroll to the bottom
- 8 Multiple-Copy Collections
- 9 public static void fill(List list, Object element): method copies the same object reference to every element of the list
- 10 Reversing Lists: public static void reverse(List list)
- 11 Select a range
- 12 Setting Items: Add the items all at once
- 13 Shuffling Lists: randomly reorder the elements of a list
- 14 Sorting Lists: reordering the elements of a List
Copying Lists: public static void copy(List dest, List src)
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MainClass {
public static void main(String[] a) {
List l1 = Arrays.asList(new String[] { "A", "B" ,"C"});
List l2 = Arrays.asList(new String[] { "A", "C", "D" });
Collections.copy(l1, l2); // works
Collections.copy(l2, l1); //
System.out.println(l1);
System.out.println(l2);
}
}
[A, C, D] [A, C, D]
Create a List with a vertical ScrollBar and Add a bunch of items to it
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class ListCreateAddItemsToIt {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a List with a vertical ScrollBar
List list = new List(shell, SWT.V_SCROLL);
// Add a bunch of items to it
for (int i = 0; i < 500; i++) {
list.add("A list item");
}
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Create a multiple-selection list
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class CreateMultipleSelectionList {
// Strings to use as list items
private static final String[] ITEMS = { "A", "B", "C", "D" };
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a multiple-selection list
List multi = new List(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
// Add the items, one by one
for (int i = 0, n = ITEMS.length; i < n; i++) {
multi.add(ITEMS[i]);
}
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Create a single-selection list and add items
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class CreateSingleSelectionListAddItems {
// Strings to use as list items
private static final String[] ITEMS = { "A", "B", "C", "D" };
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a single-selection list
List single = new List(shell, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
// Add the items, one by one
for (int i = 0, n = ITEMS.length; i < n; i++) {
single.add(ITEMS[i]);
}
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Introducing List and List Styles
List boxes display lists of strings and allow users to select one or more of them.
StyleEffectSWT.BORDERDraws a border around this List.SWT.SINGLECreates a List that allows selection of only one item at a time. This is the default.SWT.MULTICreates a List that allows selection of multiple items at a time. You may specify only one of SWT.SINGLE or SWT.MULTI.SWT.H_SCROLLCreates a horizontal scrollbar to scroll this List.SWT.V_SCROLLCreates a vertical scrollbar to scroll this List.
List Item Single Selection
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class ListItemSelection {
// Strings to use as list items
private static final String[] ITEMS = { "A", "B", "C", "D" };
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a single-selection list
List single = new List(shell, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL);
// Add the items, one by one
for (int i = 0, n = ITEMS.length; i < n; i++) {
single.add(ITEMS[i]);
}
// Select the third item
single.select(2);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Make List Scroll to the bottom
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class ListScrollBottom {
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a List with a vertical ScrollBar
List list = new List(shell, SWT.V_SCROLL);
// Add a bunch of items to it
for (int i = 0; i < 500; i++) {
list.add("A list item");
}
// Scroll to the bottom
list.select(list.getItemCount() - 1);
list.showSelection();
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Multiple-Copy Collections
The nCopies() method of Collections is similar to using fill(), then copy(), with a List:
public static List nCopies(int n, Object element)
[null, null, null, null, null, null, null, null, null, null]
public static void fill(List list, Object element): method copies the same object reference to every element of the list
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainClass {
public static void main(String[] a) {
List list = new ArrayList(10);
Object anObject = "A";
list.add("N");
Collections.fill(list, anObject);
System.out.println(list);
System.out.println(list.size());
}
}
[A] 1
Reversing Lists: public static void reverse(List list)
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MainClass {
public static void main(String[] a) {
List barFlies = Arrays.asList(new String[] { "A", "B", "C" });
Collections.reverse(barFlies);
System.out.println(barFlies);
}
}
[C, B, A]
Select a range
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class SelectRangeList {
// Strings to use as list items
private static final String[] ITEMS = { "A", "B", "C", "D" };
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a multiple-selection list
List multi = new List(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
// Add the items all at once
multi.setItems(ITEMS);
// Select a range
multi.select(0, 2);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Setting Items: Add the items all at once
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Shell;
public class SettingItemsAddItemAtOnce {
// Strings to use as list items
private static final String[] ITEMS = { "A", "B", "C", "D" };
public static void main(String[] args) {
Display display = new Display();
Shell shell = new Shell(display);
shell.setLayout(new FillLayout());
// Create a multiple-selection list
List multi = new List(shell, SWT.BORDER | SWT.MULTI | SWT.V_SCROLL);
// Add the items all at once
multi.setItems(ITEMS);
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
display.dispose();
}
}
Shuffling Lists: randomly reorder the elements of a list
public static void shuffle(List list)
public static void shuffle(List list, Random rnd)
[H, D, A, E, C, B, I] [H, D, A, E, C, B, I]
Sorting Lists: reordering the elements of a List
public static void sort(List list)
public static void sort(List list, Comparator comp)
[A, B, C]