Bardzo proszę o podpowiedz gdzie mam błąd ;/ wklejam kawałek kodu z jednej klasy, w tej czesci ma wyswietlac sie okno z zakladki a w nim wykres. Szukam bledu juz 2 H i nie wiem co jest zle, może specjaliści coś doradzą. Proszę o odpowiedz.
package pg;
import java.awt.;
import java.awt.event.;
import javax.swing.;
import java.awt.geom.;
/**
-
Klasa, która definiuje i zarządza oknem
-
przeznaczonym do dodawania nowych obiektów klasy Osoba.
*/
public class DodajWk extends JPanel implements ActionListener {
private JFrame rysujWykres;
public static DodajWk program;// ?
private JFrame okno;
private JDialog dodajWk;
private JButton przyciskZakoncz;
private Graphics2D graphics2d;
private static final long serialVersionUID = 1L;
public DodajWk( JFrame okno ){
rysujWykres = okno;
}
public DodajWk(){
super();
this.setBackground(Color.white);
okno.setSize(300,100);
okno.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
okno.setLocationRelativeTo(null);
okno.add(this, BorderLayout.CENTER);
okno.setVisible(true);
}public void pokazOkno(){
if( dodajWk==null )
utworzOkno();
else
dodajWk.setVisible( true );
}
public void paint(Graphics g){
super.paint(g);
graphics2d=(Graphics2D) g;
narysujWykres();
}
private void utworzOkno(){
dodajWk = new JDialog( rysujWykres, "Wykres", true );
dodajWk.setLayout( new GridLayout(5,4,25,40) );
przyciskZakoncz = new JButton( "Zakoncz" );
dodajWk.add( przyciskZakoncz );
przyciskZakoncz.addActionListener( this );
dodajWk.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
dodajWk.setLocationRelativeTo(null);
dodajWk.setSize( 500, 400 );
dodajWk.setLocationRelativeTo( null );
dodajWk.setVisible( true );
}public void dodajOs( double x1, double y1, double x2, double y2,
double dlugoscGrotu, double szerokoscGrotu, boolean pozioma ){
Point2D.Double p1, // poczatek osi
p2, // koniec osi
p3, // gorna czesc strzalki przy koncu osi
p4; // dolna czesc strzalki przy koncu osi
p1 = new Point2D.Double( x1, y1 );
p2 = new Point2D.Double( x2, y2 );
if( pozioma ){
p3 = new Point2D.Double( x2-dlugoscGrotu, y2-szerokoscGrotu );
p4 = new Point2D.Double( x2-dlugoscGrotu, y2+szerokoscGrotu );
} else {
p3 = new Point2D.Double( x2-szerokoscGrotu, y2+dlugoscGrotu );
p4 = new Point2D.Double( x2+szerokoscGrotu, y2+dlugoscGrotu );
}
Line2D.Double osx,
strzalka1,
strzalka2;
osx = new Line2D.Double( p1, p2 );
strzalka1 = new Line2D.Double( p2, p3 );
strzalka2 = new Line2D.Double( p2, p4 );
graphics2d.draw( osx );
graphics2d.draw( strzalka1 );
graphics2d.draw( strzalka2 );
}public void narysujWykres(){
graphics2d.setStroke( new BasicStroke( 2.0f,
BasicStroke.CAP_ROUND, // ązaokrglenie ńkoca linii
BasicStroke.JOIN_BEVEL ) );
graphics2d.setColor( Color.BLACK );
dodajOs( 50, 250, 850, 250, 25, 10, true ); // oś x
dodajOs( 450, 450, 450, 50, 25, 10, false ); // oś y
int len = 100; // liczba punktow wykresu
// wspolrzedne punktow wykresu: [px,py]
float [] px = new float[ len ];
float [] py = new float[ len ];
int i;
// okreslenie wartosci w tablicach x i y; y = cos(x)
for( i=0; i<len; i++ ){
// przeskalowanie zmiennej x z zakresu [0,len] do zakresu [-2 pi, 2 pi]
px[i] = ((float)(i-len/2)) / ((float)len) * 4.0f * (float)Math.PI;
py[i] = (float)Math.cos( px[i] );
}
// przeskalowanie zmiennych do rozmiarow okna
// x: z zakresu [-2 pi, 2 pi] do zakresu [ 50, 850 ]
// y: z zakresu [-1 , 1 ] do zakresu [ 225, 75 ]
for( i=0; i<len; i++ ){
px[i] = px[i] / 4.0f / (float)Math.PI * 800.0f + 450.0f;
py[i] = - py[i] * 150.0f + 250.0f;
}
// zdefiniowanie linii wykresu
GeneralPath liniaWykresu = new GeneralPath( GeneralPath.WIND_EVEN_ODD, px.length );
liniaWykresu.moveTo( px[0], py[0] );
for( i = 1; i < px.length; i++ )
liniaWykresu.lineTo( px[i], py[i] );
graphics2d.setColor( Color.GREEN );
graphics2d.draw( liniaWykresu );
}public void actionPerformed( ActionEvent e ){
Object src = e.getSource();if( src == przyciskZakoncz ){ dodajWk.setVisible( false ); }
}
}