amsrxr Opublikowano 23 Stycznia 2010 Zgłoś Opublikowano 23 Stycznia 2010 Stworzyć JListę, pokazująca informacje o temperaaturze w postaci: k stopni C = f stopni F gdzie k zmienia się od -70 do +60. Uwaga: nie wolno używać tablic ani kolekcji. ================ Zrobilem tak ze uzywam jednak tablicy string String[] strings1 = new String[200]; a potem w forze: strings1[count] = i+" stopni C = "+f+" stopni F "; a potem JList list = new JList(strings1); JFrame frame = new JFrame("JList Test"); itp i koniec. ale jak to zrobic jak w poleceniu bez uzycia tablic:( Dodam ze jestem poczatkujacy, i nie za bardzo dobrze orientuje sie w tej materii aby wykonac to zadanie, prosze o pomoc Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Drainer Opublikowano 23 Stycznia 2010 Zgłoś Opublikowano 23 Stycznia 2010 list.addElement("jakis string") ? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
shooter Opublikowano 23 Stycznia 2010 Zgłoś Opublikowano 23 Stycznia 2010 import javax.swing.DefaultListModel; public class DegreesListModel<E extends Number> extends DefaultListModel{ private double conversionToFahrenheits(double celsius){ return 32 + (9/5 * celsius); } public Object get(int index){ E e = (E)super.getElementAt(index); return conversionToFahrenheits(e.doublevaluateue()); } private static final long serialVersionUID = -4894867955673906262L; } import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Toolkit; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.*; public class Main { public static void main(String[] args){ DegreesListModel<Double> model = new DegreesListModel<Double>(); model.addElement(1); model.addElement(10); model.addElement(10); final JList list = new JList(model); list.addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e) { DefaultListModel model = (DefaultListModel)list.getModel(); JOptionPane.showMessageDialog(null, (model.get(e.getFirstIndex()))+ " F"); } }); JFrame frame = new JFrame(); frame.add(list, BorderLayout.CENTER); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); frame.setBounds(d.width/2-100, d.height/2-100, 200, 200); frame.setVisible(true); } } Po kliknięciu na pozycję listy pojawia się okienko z info ile to jest st. F. Na liście mamy st. C. Nie jest to pisane bardzo zgodnie z technikami OO, ale dla początkującego się nada. Piwo się należy :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
amsrxr Opublikowano 23 Stycznia 2010 Zgłoś Opublikowano 23 Stycznia 2010 tak super o to chodzilo(przyznam sie ze spedzilem cala noc i samemu mi sie udalo zrobic:)) ale mam jeden problem jeszcze, glowilem sie nad tym pare h, ale najpierw tresc cala wrzuce: Stworzyć tabellę (JTable), pokazującą ksiaażki. Książka ma: autora tytul cenę Informacja o książkach ma być wczytana z pliku tekstowego. Należy zapewnić: możliwość edycji cen w tabeli (w komórce) możlwiość dodawania i usuwania wierszy do/z tabeli z poziomu GUI. Problem moj polega na tym ze nie moge dojsc w jaki sposob wczytac do tej tablicy, ale calego pliku. Object[][] data = { { "Chopin Fryderyk", "M", 1789 }, { "Kopernik Mikołaj", "M", 2900 }, { "Słowacki Juliusz", "M", 2000 }, { "Szymborska Wisława", "K", 5200 }, { "Polański Roman", "M", 3000 }, { "Skłodowska-Curie Maria", "K", 2000 }, { "Modrzejewska Helena", "K", 2000 }, }; Sam fakt wczyttywania dziala czyli ponizej: while ((buffer = lnr.readLine()) != null) { StringTokenizer st = new StringTokenizer(buffer,";"); autor = st.nextToken(); tytul = st.nextToken(); cena = st.nextToken(); System.out.print(autor+";"); System.out.print(tytul+";"); System.out.println(cena); data2 = new Object[][] { { autor, tytul, cena }}; //tu dla przykladu dalem data2 zamiast data; wczytuje i wynikiem jest odstatnia ksiazka z pliku zamiast wszystkie Format z pliku jest nastepujacy: Adam Mickiewicz; Pan Tadeusz; 1000 Adam Mickiewicz; Pan Tadeusz; 100 Rownling; Harry Potter; 100 Prosze o jakis pomysl, bo nie saze zebym to przeszedl sam. za duzo spedzilem czasu nad tym, i prosze o podpowiedz co zrobic jak doisac aby wrzucal kolejne elementy do tej tablicy. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
shooter Opublikowano 23 Stycznia 2010 Zgłoś Opublikowano 23 Stycznia 2010 (edytowane) Zacznijmy od tego, że JTable - jak i inne komponenty Swinga - opierają się na wzorcu MVC - poczytaj o tym. Aby utworzyć JTable musisz jej podać model. Są przygotowane modele jeśli nie potrzebujesz zaawansowanej funkcjonalności. w JList też jest model jak widzisz. Bez piwa nie chce mi się tego robić :P Podam tylko parę wskazówek. Jak chcesz wczytywać z pliku i parsować jednocześnie - uzyj Scannera i podaj mu do konstruktora File. Dużo prościej. Po parsowaniu masz dane gotowe do wczytania do modelu JTable. Model użyj do konstruowania komponentu JTable. Edytowane 23 Stycznia 2010 przez shooter Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
amsrxr Opublikowano 24 Stycznia 2010 Zgłoś Opublikowano 24 Stycznia 2010 (edytowane) wczytalem z pliku za pomoca String[] columnNames = { "Nazwisko i imię", "Tytul", "Cena" }; final DefaultTableModel model = new DefaultTableModel(data2,columnNames); final JTable table2 = new JTable(model); while ((buffer = lnr.readLine()) != null) { StringTokenizer st = new StringTokenizer(buffer,";"); while(st.hasMoreTokens()){ autor = st.nextToken(); tytul = st.nextToken(); cena = st.nextToken(); model.insertRow(counter,new Object[]{autor,tytul,cena}); counter++; } } I zadzialalo. W JTabeli weszly ladnie tytuly, auotrzy i cena. Moze tak byc? Edytowane 24 Stycznia 2010 przez amsrxr Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...