Cześć i czołem!
Uczę się właśnie JTree i mam taką drobną aplikacyjkę:
Przy uruchamianiu programiku JTree jest budowany na podstawie bazy danych SQL. Chciałbym jednak, by nodami nie były całe nazwiska, ale kolejne litery alfabetu w zależności od tego, czy nazwisko na taką literę alfabetu występuje w bazie, czy też nie. Poniżej kod metody i obsadzania JTree:
// Metoda robiąca nodki i listki
private DefaultMutableTreeNode processHierarchy(Object[] hierarchy)
{
DefaultMutableTreeNode node = new DefaultMutableTreeNode(hierarchy[0]);
DefaultMutableTreeNode child;
for (int i = 1; i < hierarchy.length; i++)
{
Object nodeSpecifier = hierarchy[i];
if (nodeSpecifier instanceof Object[])
{
child = processHierarchy((Object[])nodeSpecifier);
}
else
{
child = new DefaultMutableTreeNode(nodeSpecifier);
}
node.add(child);
}
return (node);
}
// Tworzę listę, którą obsadzam wynikami z zapytania do bazy danych
ArrayList list = new ArrayList();
list.add("Pacjenci");
try
{
String sql = "SELECT LastName, FirstName FROM pacjenci ORDER BY LastName";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next())
{
Object value[] = {rs.getString(1), rs.getString(2)};
list.add(value);
}
}
catch (Exception e)
{
JOptionPane.showMessageDialog(null, e);
}
Object hierarchy[] = list.toArray();
DefaultMutableTreeNode root = processHierarchy(hierarchy);
JTree tree = new JTree(root);
scrollPane.setViewportView(tree);
Co mógłbym zrobić, by w zależności od tego, czy nazwisko na daną literę alfabetu istnieje, czy też nie, tworzyć nod o nazwie danej litery np. "N" i w nim osadzać w postaci listków wszystkie nazwiska na "N" w postaci np. "Nowicki, Rafał"? Będę naprawdę wdzięczny za wskazówki!
Pozdrawiam ciepło!