Polski Serwis Naukowy - OnLine od 1999 roku
RSS
Piątek, 1 czerwca 2012
Konrad, Magdalena, Świętopełk, Alfons
 W 1980 telewizja informacyjna CNN rozpoczęła emisję
 Międzynarodowy Dzień Dziecka
 W 1915 urodził się Jan Twardowski
Nowe publikacje
Post dodany: |29 Maj 2008|, 2008 19:34
Data rejestracji: 16 Maj 2008 postów: 6
mógłby ktoś pomóc opisać kod?
| Kod | public class main {
public static main(String[] args)//funkcja main()
{
new misiek();// nowy obiekt
}
}
import java.awt.*;// import klas do tworzenia obrazów, rysowania grafiki
import java.awt.event.*;// import klas i interfejsów do obsługi zdarzeń generowanych przez AWT
import java.awt.image.*;// import klas do tworzenia obrazów
import javax.swing.*;// import komponentów
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;//do wskazywania orientacji
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
//W konstruktorze klasy misiek tworzone są przycisk, panel menu itp.).
Następnie po naciśnięciu któregoś przycisku wywoływane jest actionPerformed (wcześniej w konstruktorze został podczepiony listener do tych przycisków- implementacja intefejsu ActionListener) która z kolei startuje watek zaimplementowany w tej samej klasie (metoda run-implementacja interfejsu Runnable). Po starcie tego wątku metoda run chodzi w koło i tam odbywa się rysowanie wybranego z pomoca przycisku wykresu.//
public class misiek implements Runnable, ActionListener // klasa aplikacji
{ // deklaracje//
JFrame ramka;
JPanel panel;
JComboBox combobox;
JLabel label1, label2, label3, label4, label5, label6, wykres;
JButton rysuj, czysc;
JTextField textfield1, textfield2, textfield3, textfield4, textfield5;
XYSeries series;
XYSeriesCollection seriescollection;
JFreeChart freechart;
BufferedImage image;
double a, b, c, x=0, bound1, bound2;
int time=0;
boolean draw=false;
public misiek()
{
ramka=new Jframe("Wykresy");// tworzenie nowego obiektu przypisanego do ramka
ramka.setLayout(null);
ramka.setSize(1000,700);//ustalenie rozmiarów
ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//menu
panel=new JPanel();
panel.setLayout(new GridLayout(14,1));
panel.setBackground(Color.LIGHT_GRAY);
panel.setBounds(0,0,100,600);
panel.setVisible(true);
ramka.add(panel);
rysuj=new JButton("rysuj");
rysuj.addActionListener(this);
panel.add(rysuj);
label1=new JLabel(" funkcja f(x)");
panel.add(label1);
combobox=new JComboBox();
combobox.addItem("a*sin(bx)=0");
combobox.addItem("a*cos(bx)=0");
combobox.addItem("a*x^2+b*x+c=0");
panel.add(combobox);
label2=new JLabel(" kres dolny:");
panel.add(label2);
textfield1=new JTextField("0");
panel.add(textfield1);
label3=new JLabel(" kres górny:");
panel.add(label3);
textfield2=new JTextField("10");
panel.add(textfield2);
label4=new JLabel(" a");
panel.add(label4);
textfield3=new JTextField("1");
panel.add(textfield3);
label5=new JLabel(" b");
panel.add(label5);
textfield4=new JTextField("5");
panel.add(textfield4);
label6=new JLabel(" c");
panel.add(label6);
textfield5=new JTextField("10");
panel.add(textfield5);
czysc=new JButton("czysc");
czysc.addActionListener(this);
panel.add(czysc);
series=new XYSeries("");
seriescollection=new XYSeriesCollection();
freechart=ChartFactory.createXYLineChart(" ", "x", "f(x)", seriescollection, PlotOrientation.VERTICAL, true, true, false);
image=freechart.createBufferedImage(800, 500);
//miejsce na wykres
wykres=new JLabel();
wykres.setIcon(new ImageIcon(image));
wykres.setBounds(110, 10, 680, 580);
ramka.add(wykres);
ramka.setVisible(true);
ramka.requestFocus();
}
public void run()// metoda run zawiera zadania do wykonania
{
x=bound1=Double.parseDouble(textfield1.getText());
bound2=Double.parseDouble(textfield2.getText());
while(draw==true)
{
try
{
Thread.sleep(10);//Przerwanie wykonywanie wątku na czas określony w argumencie metody (wyrażony w milisekundach)//
}
catch(InterruptedException exc) // metoda może zgłosić wyjątek przechwytuje go w bloku try-catch//
{
return;
}
if(x<=bound2)
{
a=Double.parseDouble(textfield3.getText());
b=Double.parseDouble(textfield4.getText());
bound1=Double.parseDouble(textfield1.getText());
bound2=Double.parseDouble(textfield2.getText());
x=bound1+(double)time/20;
if(combobox.getSelectedItem()=="a*sin(bx)=0")
series.add(x, a*Math.sin(b*x));
if(combobox.getSelectedItem()=="a*cos(bx)=0")
series.add(x, a*Math.cos(b*x));
if(combobox.getSelectedItem()=="a*x^2+b*x+c=0")
series.add(x, a*x*x+b*x+c);
seriescollection.removeAllSeries();
seriescollection.addSeries(series);
freechart=ChartFactory.createXYLineChart(" ", "x", "f(x)", seriescollection, PlotOrientation.VERTICAL, false, false, false);
image=freechart.createBufferedImage(800, 500);
wykres.setIcon(new ImageIcon(image));
time++;
}
else
{
draw=false;
}
}
}
public void actionPerformed(ActionEvent e) // obsługi zdarzeń interfejsu ActionPerformed, który przechwytuje informację od komponentów AWT m.in. od przycisków - Button) o tym, że "wykonana została na nich akcja".
{
if(e.getActionCommand()=="czysc")
{
draw=false;
time=0;
series.clear();
seriescollection.removeAllSeries();
freechart=ChartFactory.createXYLineChart(" ", "x", "f(x)", seriescollection, PlotOrientation.VERTICAL, true, true, false);
image=freechart.createBufferedImage(800, 500);
wykres.setIcon(new ImageIcon(image));
}
if(e.getActionCommand()=="rysuj")
{
draw=true;
Thread t=new Thread(this); // tworzymy nowy egzemplarz klasy thread wskazujemy na niego i go uruchamiamy //
t.start();
}
}
} |
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Nie możesz ściągać załączników na tym forum
|
Wersja do druku
Dodaj temat do Ulubionych
|
Powered by
phpBB © 2000, 2002, 2005, 2007 phpBB Group
|