Skocz do zawartości
amsrxr

[java] Zadanie Programistyczne

Rekomendowane odpowiedzi

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 przez shooter

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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 przez amsrxr

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...