Re: Displaying the conten
To: comp.lang.java.gui
In article <_MXgl.6799$NV1.2868@newsfe01.ams2>,
"Jeremy Watts" <rturytr@jhfhgfd.com> wrote:
I've added this 'change listener' now to the code, but it seems to
act very slowly, and sometimes doesn't act at all...
For instance I'll make an entry in one of the cells, and then press
Enter, some 10- 20 seconds later then the change is seemingly
registered. Any idea why?
I can't reproduce this. I don't think you want a change listener on the
declare button; you only care when it's clicked. You can validate
entries in the button's action handler. You may also want to study the
examples in the tutorial, particularly regarding TableModel:
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
Are your entries really Strings? Here's a simplified variation on your
code to try:
<code>
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
public class TestTable {
private static final int ROW_COUNT = 4;
private static final int COL_COUNT = 5;
private final String[][] result = new String[ROW_COUNT][COL_COUNT];
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
new TestTable().createGUI();
}
});
}
public void createGUI() {
int rowHeight = 25;
JFrame frame = new JFrame("Define your ["
+ ROW_COUNT + ", " + COL_COUNT + "]" + " matrix");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new FlowLayout());
JButton declare = new JButton("Declare it");
bottomPanel.add(declare);
frame.add(bottomPanel, BorderLayout.SOUTH);
final JTable table = new JTable(ROW_COUNT, COL_COUNT);
table.setBackground(Color.lightGray);
table.setSelectionBackground(Color.pink);
table.setRowHeight(rowHeight);
declare.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
for (int col = 0; col < table.getColumnCount(); col++) {
for (int row = 0; row < table.getRowCount(); row++) {
String s = (String) table.getValueAt(row, col);
result[row][col] = s;
System.out.print(s + " ");
}
System.out.println();
}
}
});
frame.add(table);
frame.setLocation(50, 50);
frame.pack();
frame.setVisible(true);
}
}
</code>
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
---
* Synchronet * The Whitehouse BBS --- whitehouse.hulds.com --- check it out free usenet!
--- Synchronet 3.15a-Win32 NewsLink 1.92
Time Warp of the Future BBS - telnet://time.synchro.net:24