Auf Thema antworten

Heyho,


ich möchte auf einem JPanel zeichnen und das ganze soll über eine eigene Klasse passieren. Doch leider wenn ich es einbinden möchte, zerschießt er mir die ganze Swing Oberfläche.


Könnt ihr mir helfen?


Hauptklasse:

[code=Java]package mappe;


import java.awt.EventQueue;


import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.border.EmptyBorder;

import javax.swing.JSlider;

import javax.swing.JLabel;

import javax.swing.JButton;

import javax.swing.event.ChangeListener;

import javax.swing.event.ChangeEvent;


import javax.swing.border.EtchedBorder;


public class Haupt extends JFrame {


    private JPanel contentPane;

   


    public static void main(String[] args) {

        EventQueue.invokeLater(new Runnable() {

            public void run() {

                try {

                    Haupt frame = new Haupt();

                    frame.setVisible(true);

                } catch (Exception e) {

                    e.printStackTrace();

                }

            }

        });

    }


   

    public Haupt() {

       

        // Deklaration

        contentPane = new JPanel();

        JSlider slider = new JSlider();

        JButton btnStarten = new JButton("Starten");

        JButton btnStoppen = new JButton("Stoppen");

        JLabel labelAnzahlTuerme = new JLabel("1");

        JLabel lblAnzahlDerTrme = new JLabel("Anzahl der T\u00FCrme:");

        JPanel panel = new JPanel();

        Zeichenbrett brett = new Zeichenbrett();

       

        // Add

        contentPane.add(slider);

        contentPane.add(lblAnzahlDerTrme);

        contentPane.add(btnStarten);

        contentPane.add(btnStoppen);

        contentPane.add(labelAnzahlTuerme);

        contentPane.add(panel);

       

        // Zeichenbrett einbinden

        panel.add(brett);

       

       

        // MainFrame

        setTitle("Die T\u00FCrme von Hanoi");

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        setBounds(100, 100, 800, 700);

        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

        setContentPane(contentPane);

        contentPane.setLayout(null);

        setResizable(false);

       

        // Slider

        slider.setMinimum(1);

        slider.setMaximum(10);

        slider.setBounds(10, 36, 300, 26);

        slider.setPaintTicks(true);

        slider.setValue(1);

       

        // Buttons

        btnStarten.setBounds(342, 36, 89, 23);

        btnStoppen.setBounds(441, 36, 89, 23);

       

        // Labels

        lblAnzahlDerTrme.setBounds(10, 11, 200, 14);

        labelAnzahlTuerme.setBounds(120, 11, 46, 14);

        labelAnzahlTuerme.setText(String.valueOf(slider.getValue()));

       

        // Panel

        panel.setBounds(10, 73, 764, 577);

        panel.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));

       

        // Events

        slider.addChangeListener(new ChangeListener() {

            public void stateChanged(ChangeEvent arg0) {

                labelAnzahlTuerme.setText(String.valueOf(slider.getValue()));

            }

        });

       

    }

}


[/code]


Externe Klasse:

[code=Java]package mappe;


import java.awt.Graphics;


import javax.swing.JPanel;


public class Zeichenbrett extends JPanel {

   

    protected void paintComponent(Graphics g) {

        paintComponent(g);

        g.drawLine(0, 0, 10, 5);

    }

   

}

[/code]


MfG

vin



Oben