Nie wiem kompletnie jak poukładać kod, żeby działał. Przede wszystkim problem ze zmiennymi: wczytuję do N, UpperLimit i LowerLimit z labeli i nie mogę z nich korzystać następnie w main. Po prostu nie wiem.
Bardzo proszę, żeby ktoś mi z tym pomógł, poniżej kod źródłowy.
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.text.NumberFormat;
import java.util.Random;
import javax.swing.*;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
public class misiek implements Runnable, ActionListener
{
public static int TableOfResults[][];
public static int Nmax, Hrozmiar;
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;
public double a, b, c, x=0, bound1, bound2, LowerLimit, UpperLimit;
public int time=0, N;
boolean draw=false;
public misiek(){
ramka=new JFrame("Wykresy");
ramka.setLayout(null);
ramka.setSize(1000,700);
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("CountSort");
combobox.addItem("SelectSort");
combobox.addItem("Porównanie");
panel.add(combobox);
label2=new JLabel("Dolna Granica:");
panel.add(label2);
textfield1=new JTextField("0");
panel.add(textfield1);
label3=new JLabel("Górna Granica:");
panel.add(label3);
textfield2=new JTextField("10");
panel.add(textfield2);
label4=new JLabel("Ilość elementów");
panel.add(label4);
textfield3=new JTextField("1");
panel.add(textfield3);
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();
N = Integer.valueOf(textfield3.getText()).intValue();
LowerLimit = Double.parseDouble(textfield1.getText());
UpperLimit = Double.parseDouble(textfield2.getText());
}
public void glowna(){
final int p = 100;
final int h = 5;
int []T;
int []Ts;
int [][]results;
int IndexTs = 0;
int TsDominate = 0;
T = new int[N];
Ts = new int[p];
results = new int[N][3];
int i, j, k;
float avarage;
Random generator = new Random();
for(i = h; i<N; i=i+h)
{ IndexTs = 0;
for(k=1; k<=p; k++, IndexTs++)
{ for(j=0; j<=i-1; j++)
T[j] =(int) (generator.nextFloat()* (UpperLimit - LowerLimit) + LowerLimit);
TsDominate = Wykresy.select(T, i);
Ts[IndexTs] = TsDominate;
}
avarage = 0;
for(j = 0; j<=p-1; j++)
avarage = avarage + Ts[j];
avarage = avarage / p;
results[i][0] = i;
results[i][1] = (int)avarage;
results[i][2] = (i*i-i)/2;
}
TableOfResults = results;
Nmax = N;
Hrozmiar = h;
}
public static void main(String[] args){
misiek wykres=new misiek();
wykres.glowna();
}
public void run()
{
while(draw==true)
{
try
{
Thread.sleep(10);
}
catch(InterruptedException exc)
{
return;
}
if(x<=UpperLimit)
{
int x=0, i=0;
if(combobox.getSelectedItem()=="CountSort")
{
for(i=0;i<Nmax-5;i=i+5,x++)
series.add(x, TableOfResults[x][2]);
}
if(combobox.getSelectedItem()=="SelectSort")
{ for(i=0; i<Nmax-5; i=i+5, x++)
series.add(x, (i*i-i)/2);
}
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)
{
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);
t.start();
}
}
}