Esta es una interfaz gráfica de usuario con Arraylist en Java. Estoy tratando de mostrar el ArrayList en una buena disposición en el centro del panel. Sería bueno ver la lista completa! Qué código tengo que agregar para hacer que la corriente de un JList y se mostrará correctamente. También, ¿cómo puedo agregar a la ArrayList de la entrada y el botón agregar en la parte superior de la interfaz gráfica de usuario. Alguna idea sobre lo que el código podría alcanzar este fin?

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JScrollPane;
import java.util.ArrayList;
import java.util.Collections;
public class ArrayListGUI extends JPanel
{
//main method; runs application and sets up the JFrame
public static void main(String[] args)
{
JFrame frame = new JFrame("ArrayList");
ArrayListGUI content = new ArrayListGUI();
frame.setContentPane(content);
frame.pack();
frame.setResizable(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(800,690);
frame.setLocation(75,50);
frame.setVisible(true);
}
//declare variables
private JList message;
private Action messageAction;
private JButton removeAll, printL, saveF, quitA; //west
private JButton az, za, rev, random; //east
private JTextField inputBox;
private JButton addButton;
private JTextField sizeBox; //bottom
//-------------------------------------------------------------------------------------------
public ArrayListGUI()
{
ArrayList<String> wordlist = new ArrayList<String>();
//wordlist ArrayList has been created, now we add words to that list...
//(data set from the Word Association Test - Carl Jung)
wordlist.add("Head");
wordlist.add("Green");
wordlist.add("Water");
wordlist.add("To sing");
wordlist.add("Dead");
wordlist.add("Long");
wordlist.add("Ship");
wordlist.add("To pay");
wordlist.add("Window");
wordlist.add("Friendly");
wordlist.add("To cook");
wordlist.add("To ask");
wordlist.add("Cold");
wordlist.add("Stem");
wordlist.add("To dance");
wordlist.add("Village");
wordlist.add("Lake");
wordlist.add("Sick");
wordlist.add("Pride");
wordlist.add("To Cook"); //this item 20 in the word array
wordlist.add("Ink");
wordlist.add("Angry");
wordlist.add("Needle");
wordlist.add("To swim");
wordlist.add("Voyage");
wordlist.add("Blue");
wordlist.add("Lamp");
wordlist.add("To sin");
wordlist.add("Bread");
wordlist.add("Rich");
wordlist.add("Tree");
wordlist.add("To prick");
wordlist.add("Pity");
wordlist.add("Yellow");
wordlist.add("Mountain");
wordlist.add("To die");
wordlist.add("Salt");
wordlist.add("New");
wordlist.add("Custom");
wordlist.add("To pray"); //this item 40 in the word array
wordlist.add("Money");
wordlist.add("Foolish");
wordlist.add("Pamphlet");
wordlist.add("Despise");
wordlist.add("Finger");
wordlist.add("Expensive");
wordlist.add("Bird");
wordlist.add("To fall");
wordlist.add("Book");
wordlist.add("Unjust");
wordlist.add("Frog");
wordlist.add("To part");
wordlist.add("Hunger");
wordlist.add("White");
wordlist.add("Child");
wordlist.add("To take care");
wordlist.add("Lead pencil");
wordlist.add("Sad");
wordlist.add("Plum");
wordlist.add("To marry"); //this item 60 in the word array
wordlist.add("House");
wordlist.add("Dear");
wordlist.add("Glass");
wordlist.add("To quarrel");
wordlist.add("Fur");
wordlist.add("Big");
wordlist.add("Carrot");
wordlist.add("To paint");
wordlist.add("Part");
wordlist.add("Old");
wordlist.add("Flower");
wordlist.add("To beat");
wordlist.add("Box");
wordlist.add("Wild");
wordlist.add("Family");
wordlist.add("To wash");
wordlist.add("Cow");
wordlist.add("Friend");
wordlist.add("Luck");
wordlist.add("Lie"); //this item 80 in the word array
wordlist.add("Deportment");
wordlist.add("Narrow");
wordlist.add("Brother");
wordlist.add("To fear");
wordlist.add("Stork");
wordlist.add("False");
wordlist.add("Anxiety");
wordlist.add("To kiss");
wordlist.add("Bride");
wordlist.add("Pure");
wordlist.add("Door");
wordlist.add("To choose");
wordlist.add("Hay");
wordlist.add("Contented");
wordlist.add("Ridicule");
wordlist.add("To sleep");
wordlist.add("Month");
wordlist.add("Nice");
wordlist.add("Woman");
wordlist.add("To abuse"); //Phew! this item 100 in the word array
//Word list array is now populated with the basic data
//------------------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
//ArrayList actions outline, code/logic to mange the list. It is outputted to console for test purposes.
//next section outputs formatted list of words
System.out.println("Contents of the ArrayList of words:");
for(String str: wordlist)
{
System.out.println(str);
}
//end output formatted list
//this section performs and displays the shuffle operation
Collections.shuffle(wordlist);
System.out.println("Results after shuffle operation:");
for(String str: wordlist)
{
System.out.println(str);
}
//end shuffle section
//prints an unformatted list of words in the ArrayList
System.out.println(wordlist);
//this queries if the wordlist is populated.  Returns true if empty.  Returns false if populated
System.out.println("Is ArrayList empty? "+ wordlist.isEmpty());
//finds and prints the index of a given word in the list, in this case 'ship'
System.out.println("Index of Ship is "+ wordlist.indexOf("Ship"));
//finds the size of the ArrayList and prints to screen
System.out.println("Size of the ArrayList is: "+ wordlist.size());
//end ArrayList actions design outline
//-----------------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------------
//create an introduction message
String begin ="Welcome! \n\n Press OK to begin the ArrayList GUI demo";
JOptionPane.showMessageDialog( null, begin );
//section for main MESSAGE
JList <String> message = new JList<>(wordlist.toArray(new String[0]));
//message.setOpaque(true);
JScrollPane scrollPane = new JScrollPane(message);
add(scrollPane, BorderLayout.CENTER);
//-----------------------------------------------------------------end message
//section for bottom panel
//call wordlist -- find if empty or not, display current size, and find index of sample word --
sizeBox = new JTextField("  Is ArrayList empty? "+ wordlist.isEmpty() +
"             Current size of list = "+ wordlist.size() +
"              Index of the example word 'Ship' is "+ wordlist.indexOf("Ship"),
JTextField.CENTER);
sizeBox.setEditable(false);  //ensures that the list text cannot be edited in the panel
sizeBox.setOpaque(true);
sizeBox.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
sizeBox.setFont( new Font("Serif", Font.BOLD, 14) );
//------------------------------------------------------------------------------end bottom
//west panel
ActionListener westListener = new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
switch ( evt.getActionCommand() )
{
case "Remove all items":
System.out.println("Remove all");//demonstrates actionlistener is working
break;
case "Print List":
System.out.println("Print List");
break;
case "Save to file":
System.out.println("Save file");
break;
case "Quit application":
System.out.println("Quit");
break;
}
}
};
//create buttons for west panel
ButtonGroup westGroup = new ButtonGroup();
removeAll = new JButton("Remove all items");
westGroup.add(removeAll);
removeAll.addActionListener(westListener);
printL = new JButton("Print List");
westGroup.add(printL);
printL.addActionListener(westListener);
saveF = new JButton("Save to file");
westGroup.add(saveF);
saveF.addActionListener(westListener);
quitA = new JButton("Quit application");
westGroup.add(quitA);
quitA.addActionListener(westListener);
//----------------------------------------------------------- end west
//create input box
inputBox = new JTextField("", JTextField.CENTER);
inputBox.setEditable(true);  //ensures that the list text cannot be edited in the panel
inputBox.setOpaque(true);
inputBox.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
inputBox.setFont( new Font("Serif", Font.BOLD, 22) );
inputBox.setForeground(Color.WHITE);
inputBox.setBackground(Color.BLACK);
//create add button
addButton = new JButton("Add to List");
//addButtonListener to take input from word add box and include in ArrayList
addButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.out.println("Add item to list");
wordlist.add(inputBox.getText() + ", "); //append the input to the list
}
});
//------------------------------------------------- end input box
//start east
ActionListener eastListener = new ActionListener()
{
public void actionPerformed(ActionEvent evt2)
{
switch ( evt2.getActionCommand() )
{
case "A to Z":
System.out.println("A to Z");
break;
case "Z to A":
System.out.println("Z to A");
break;
case "Reverse order":
System.out.println("Reverse order");
break;
case "Random order":
System.out.println("Random order");
Collections.shuffle(wordlist);
break;
}
}
};
//create EAST buttons
ButtonGroup eastGroup = new ButtonGroup();
az = new JButton("A to Z");
eastGroup.add(az);
az.addActionListener(eastListener);
za = new JButton("Z to A");
eastGroup.add(za);
za.addActionListener(eastListener);
rev = new JButton("Reverse order");
eastGroup.add(rev);
rev.addActionListener(eastListener);
random = new JButton("Random order");
eastGroup.add(random);
random.addActionListener(eastListener);
//end east
//--------------------------------------------------------------------------------------------------------
//arrange the GUI with 4 panels
//the current ArrayList will be displayed in the center.
setBorder(BorderFactory.createEmptyBorder(15,15,15,15));
JPanel left = new JPanel();
JPanel right = new JPanel();
JPanel center = new JPanel();
JPanel top = new JPanel();
JPanel bottom = new JPanel();
//create border layout and populate
setLayout(new BorderLayout(5,5));
add(left, BorderLayout.WEST);
add(right, BorderLayout.EAST);
add(center, BorderLayout.CENTER);
add(bottom, BorderLayout.SOUTH);
//place series of grid layouts inside the border layout components
left.setLayout(new GridLayout(4,1));
right.setLayout(new GridLayout(4,1));
center.setLayout(new BorderLayout(5,5));
center.add(message,BorderLayout.CENTER);
center.add(top,BorderLayout.NORTH);
top.setLayout(new GridLayout(1,2,5,5));
bottom.setLayout(new GridLayout(1,2,5,5));
//west panel
left.add(removeAll);
left.add(printL);
left.add(saveF);
left.add(quitA);
//east panel
right.add(az);
right.add(za);
right.add(rev);
right.add(random);
//top and bottom panel
top.add(inputBox);
top.add(addButton);
bottom.add(sizeBox);
} //constructor ends
} //THE END ArrayListGUI
  • El código debe ser mínima, es decir, no debe contener irrelevante líneas. Hace que sea más difícil para nosotros entender y manipular.
  • ¿Qué está tratando de manipular/entender?
  • Uno de los puntos en las líneas… voy a ser el corte hacia abajo en el espacio en blanco en el futuro de la codificación
  • I'll be cutting down on the white space No! Se va a cortar en línea real que no son relevantes, como toda la funcionalidad del botón y el estilo.
  • Gracias. Cualquier respuesta a la pregunta publicado?
  • Sí, he publicado.
  • Mirándolo ahora…

InformationsquelleAutor Charly Bear | 2015-04-22

2 Comentarios

  1. 3

    Usted puede convertir su ArrayList a una matriz que se utiliza para inicializar el JList.

    public class Listing extends JFrame {
    public static void main(String[] args) {
    new Listing();
    }
    Listing() {
    final ArrayList<String> wordlist = new ArrayList<String>();
    wordlist.add("Head");
    wordlist.add("Green");
    wordlist.add("Water");
    wordlist.add("To sing");
    wordlist.add("Dead");
    wordlist.add("Long");
    wordlist.add("Ship");
    wordlist.add("To pay");
    wordlist.add("Window");
    wordlist.add("Friendly");
    wordlist.add("To cook");
    JList<String> displayList = new JList<>(wordlist.toArray(new String[0]));
    JScrollPane scrollPane = new JScrollPane(displayList);
    getContentPane().add(scrollPane);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    pack();
    setVisible(true);
    }
    }
    • Buen aspecto de allí, así que voy a tratar de construir en mi programa y ver cómo va!
    • ¿Qué acerca del manejo de la entrada a la lista? ¿Cómo puedo añadir entrada a la lista?
    • Cuando usted limpia su código y puedo ver lo que su intento era yo voy a ayudar a usted.
    • Su trabajo. Hurra! La lista está mostrando… ¿Dónde quieres que me pegue el código a? Barra de desplazamiento no parece funcionar…
    • Ordena el código y limpiar…
    • He actualizado el código en la ventana principal, por cierto. La esperanza de que eso es correcto…
    • no parece de trabajo». Es porque agregar y, a continuación, se reemplaza por la adición de la lista de message más tarde (ver mi código actualizado).
    • Como para agregar y quitar elementos, consulte docs.oracle.com/javase/tutorial/uiswing/components/….
    • Saludos bien hecho señor/señora!

  2. 2

    Poner tus cosas en JList y poner el JList en el interior de una barra de desplazamiento.

    • Gracias. Esto representaría muy bien para el diseño desafortunadamente no he logrado implementar como no pude conseguir el programa para que se ejecute después de cambiar el texto a un JList!! También, ¿cómo puedo añadir al ArrayList de la entrada y el botón agregar en la parte superior de la GUI
    • Me gustaría leer más acerca de por qué usted no pudo obtener su JList para trabajar como esto es casi sin duda el mejor camino a seguir con esto. Si usted realmente no quiere que usted puede añadir el texto a un JTextArea que te permitirá añadir saltos de línea después de cada elemento
    • Han hecho un montón de lectura (lo creas o no!) pero no puede encontrar un ejemplo que me permite entender de tal manera que sean capaces de aplicar en este programa
    • Nos lanzan un hueso MrWiggles!
    • Charly Soportar las necesidades de un [digout]!
    • yo tendría que ver lo que has intentado con un JList…
    • Trabajando en lo nuevo… viejo código ido…
    • ¿Qué acerca del manejo de la entrada a la lista? ¿Cómo puedo añadir entrada a la lista?
    • ¿Qué significa el manejo de entrada a la lista?
    • Básicamente estoy buscando completar aspectos de la funcionalidad del programa que he estado desarrollando… nunca pensé que llegaría a este punto.
    • El manejo de la entrada tomando en la entrada del usuario en el cuadro de texto en la parte superior. Llegar y añadiendo al arraylist. También necesita el arraylist que se muestra para ser actualizados de forma dinámica.
    • Similiarly necesito para manejar funciones como las acciones para el botón para ordenar de a a z y arrastrando los pies/random.
    • cc Hey MrWiggles…Su trabajo. Hurra! La lista está mostrando… ¿Dónde quieres que me pegue el código a? Barra de desplazamiento no parece funcionar…
    • Código limpio y actualizado
    • Hey SenorWiggles he actualizado el código de edición en la ventana principal de la esperanza thats a la derecha
    • Usted querrá echa un vistazo a lo que ListModel es y lo utilice como respaldo para el JList. Una vez que haya descubierto la adición/eliminación/clasificación etc. es sencillo
    • De niza. ¿Qué acerca de la aleatoriedad de la función? ¿Qué sería eso en este programa? En la parte inferior derecha de la gui
    • Voy a comprobar ListModel
    • El ListModel proporciona una abstracción de los datos – todas las demás operaciones que usted necesita son sólo estándar de manipulación de datos, nada especial

Dejar respuesta

Please enter your comment!
Please enter your name here