Witam, jestem wlasnie w trakcie konczenia systemu eksperckiego, ale przyznam, że właśnie ze Swinga jestem zielony.
Na koniec systemu eksperckiego wyświetlam pasujące możliwości z objaśnieniami. Metodą porównania z innym kodem wyszło mi całkiem fajnie JList i wyswietla w liście wszystkie możliwości.
Ale z uwagi że jest brak zawijania wierszy, jest to nie do zaakceptowania.
Wyszukalem ze JTextArea ma możliwość zawijania i stąd moja prośba o pomoc w przełożeniu kodu JList na JTextArea.
Okienko teraz wygląda tak jak ponizej:
Kod użyty do wygenerowania tego okienka to:
JFrame k = new JFrame("YourStone - possibilities");
k.setPreferredSize(new Dimension(600, 600));
k.setMinimumSize(new Dimension(400, 400));
k.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultListModel model = new DefaultListModel();
for(int y = 0; y 500 y conclusionHandle.listValue().size(); y++)
model.addElement((new StringBuilder()).append(y + 1).append(". ").append(tablica[y]).toString());
JList list = new JList(model);
list.setSize(200, 200);
k.setBounds(350, 140, 440, 580);
list.setVisibleRowCount(-1);
list.setSelectionMode(1);
list.setLayoutOrientation(JList.HORIZONTAL_WRAP);
JScrollPane s = new JScrollPane(list);
s.setSize(new Dimension(200, 200));
k.add(s);
k.pack();
k.setVisible(true);
nie wiem czy dobrze Cię zrozumiałem bo nie testowałem otwierania plików z katalogu programu… ale otwieranie GIF’ów z dowolnego miejsca na dysku będzie Ci działać po podmianie:
String name = chooser.getSelectedFile().getName();
na
String name = chooser.getSelectedFile().getAbsolutePath();
a więc dla przykładu który był powyżej do podmiany z:
if (r == JFileChooser.APPROVE_OPTION) {
String name = chooser.getSelectedFile().getAbsolutePath();
label.setIcon(new ImageIcon(name));
}
na
if (r == JFileChooser.APPROVE_OPTION) {
String name = chooser.getSelectedFile().getAbsolutePath();
ImageIcon p=new ImageIcon(name);
label.setIcon(p);
setSize(p.getIconWidth()+6,p.getIconHeight()+50);
}
i tu małe wyjaśnienie: setSize(p.getIconWidth()+6,p.getIconHeight()+50);
ustawiamy szerokość okna na szerokość label + szerokość obu obramowań okna (po prawej i lewej stronie okna) - ustawiłem na 6px a wysokość okna na wysokość label + wysokość paska tytułowego + paska menu + dolne obramowanie okna (ustawione 50 px)