Re: Help with DefaultListModel
hiwa wrote:
Pat010 wrote:
Hello there,
I was wondering if someone can help me. I am quite new to Java so
apologies for my lack of knowledge.
I have created a JList list with a listModel and I am using the
addElement() method to add a string to the JList.
private JList list;
private DefaultListModel listModel;
listModel = new DefaultListModel();
list = new JList(listModel);
listModel.addElement( aString );
So for instance if I press a JButton with JAVA written on it the string
'JAVA' appears on the JList.
I have also used several JButton to create a QWERTY keyboard. I want to
use the keyboard buttons on my application to write JAVA (or any word)
on the JList.
For example when I press the JButton, J the letter 'J' appears on
screen:
J
when I press the JButton, A the letter 'A' appears on screen in the
same position in the list next to where the letter J is:
JA
and so on.
There are three methods in the DefaultListModel class that adds an
element to a JList:
add()
addElement()
insertelementAt()
None of these seems to let me do what I want. Do i need to create a
method like the append() method in the JTextArea class?
Would it be easier to replace the string 'J' with the string 'JA' in
the list at a specified index?
Any suggestions?
By the way is it possible to view the code of methods in the API using
JBuilder ( I have version 1.3)?
Thanks
You can't do that directly onto JList or its model.
If your current code is:
listModel.addElement(userString);
then, repeatedly update the userString after each key press and
call listModel.setElementAt(index, userString);
It works for me
//GUIExam.java
import javax.swing.*;
public class GUIExam {
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame f = new JFrame("GUI TEST");
DefaultListModel listModel = new DefaultListModel();
JList list = new JList(listModel);
f.getContentPane().add(list);
f.setSize(200, 324);
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.setVisible(true);
try {
for (int i = 0; i < 15; i++) {
listModel.addElement(i);
Thread.sleep(1000);
}
} catch (InterruptedException thrown) {
//meh
thrown.printStackTrace();
}
f.setVisible(false);
f.dispose();
}
}