L
Lukasz
Hello,
From
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
page, section "Sorting and Otherwise Manipulating Data" I downloaded
the TableSorter.java and implemented it into my test applet:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class Sort extends Applet implements ActionListener {
JButton push;
JTable tabela;
String[] data = {"First Name", "Last Name"};
String[][] values = new String[145][2];
JFrame ram;
JScrollPane scrollPane;
public void init() {
setLayout(null);
setBackground(new Color(204, 206, 209));
push = new JButton("Push");
push.addActionListener(this);
push.setBounds(10,10, 100, 25);
add(push);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == push) {
removeAll();
setLayout(null);
TableSorter sorter = new TableSorter(new Model());
tabela = new JTable(sorter);
sorter.setTableHeader(tabela.getTableHeader());
tabela.setPreferredScrollableViewportSize(new Dimension(450, 250));
scrollPane = new JScrollPane(tabela);
scrollPane.setSize(700,250);
scrollPane.setLocation(200,100);
add(scrollPane);
validate();
repaint();
}
}
class Model extends AbstractTableModel {
String[] data = {"First Name", "Last Name"};
Object[][] values = {
{"mary", "Campione"},
{"alison", "Huml"},
{"Kathy", "Walrath"},
{"Sharon", "Zakhour"},
{"Philip", "Milne"}
};
public int getColumnCount() {
return data.length;
}
public int getRowCount() {
return values.length;
}
public String getColumnName(int col) {
return data[col];
}
public Object getValueAt(int row, int col) {
return values[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
}
}
HTML:
<HTML>
<HEAD>
</HEAD>
<BODY>
<APPLET CODE="Sort.class" WIDTH=1000 HEIGHT=1000></APPLET>
</BODY>
</HTML>
When every name or surname from values array starts with big letter,
sorting works fine. When it starts with small letter, this value is not
taken to sorting. I tried in LEXICAL_COMPARATOR in TableSorter.java to
put ignoreCase() and toLowerCase(), but the result was still the same.
Anyone has an idea, what to change in TableSorter.java to have a
properly working sorting?
From
http://java.sun.com/docs/books/tutorial/uiswing/components/table.html
page, section "Sorting and Otherwise Manipulating Data" I downloaded
the TableSorter.java and implemented it into my test applet:
import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
public class Sort extends Applet implements ActionListener {
JButton push;
JTable tabela;
String[] data = {"First Name", "Last Name"};
String[][] values = new String[145][2];
JFrame ram;
JScrollPane scrollPane;
public void init() {
setLayout(null);
setBackground(new Color(204, 206, 209));
push = new JButton("Push");
push.addActionListener(this);
push.setBounds(10,10, 100, 25);
add(push);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == push) {
removeAll();
setLayout(null);
TableSorter sorter = new TableSorter(new Model());
tabela = new JTable(sorter);
sorter.setTableHeader(tabela.getTableHeader());
tabela.setPreferredScrollableViewportSize(new Dimension(450, 250));
scrollPane = new JScrollPane(tabela);
scrollPane.setSize(700,250);
scrollPane.setLocation(200,100);
add(scrollPane);
validate();
repaint();
}
}
class Model extends AbstractTableModel {
String[] data = {"First Name", "Last Name"};
Object[][] values = {
{"mary", "Campione"},
{"alison", "Huml"},
{"Kathy", "Walrath"},
{"Sharon", "Zakhour"},
{"Philip", "Milne"}
};
public int getColumnCount() {
return data.length;
}
public int getRowCount() {
return values.length;
}
public String getColumnName(int col) {
return data[col];
}
public Object getValueAt(int row, int col) {
return values[row][col];
}
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}
}
}
HTML:
<HTML>
<HEAD>
</HEAD>
<BODY>
<APPLET CODE="Sort.class" WIDTH=1000 HEIGHT=1000></APPLET>
</BODY>
</HTML>
When every name or surname from values array starts with big letter,
sorting works fine. When it starts with small letter, this value is not
taken to sorting. I tried in LEXICAL_COMPARATOR in TableSorter.java to
put ignoreCase() and toLowerCase(), but the result was still the same.
Anyone has an idea, what to change in TableSorter.java to have a
properly working sorting?