Èner: canvas in JFrame

Beitrag lesen

Hallo,
ich arbeite im moment an einem JFrame, dass ein Canvas beinhaltet. Ich habe das "Aussehen" des JFrames mit NetBeans erstellt. Das Programm soll sich die  Coordinaten von 3 Punkten merken, und sie im canvas darstellen und mit "A", "B" und "C" beschriften. Ich bin so weit, dass er sich die drei Punkte merkt. Ich bekomm es jedoch nicht hin, etwas in das Canvas zu zeichnen. Hier mein Code:

  
import java.awt.Graphics;  
import java.awt.Color;  
  
/*  
 * DreieckKreisGUI.java  
 *  
 * Created on 19. Juni 2008, 14:1  
 *  
 * @author  René  
 */  
public class DreieckKreisGUI extends javax.swing.JFrame {  
    public int iPoints = 0;  
  
    // PointABC[0] is allways Thex-Coordinate - PointABC[1] the y-Coordinate  
    public int[] PointA = new int[2];  
    public int[] PointB = new int[2];  
    public int[] PointC = new int[2];  
  
    /** Creates new form DreieckKreisGUI */  
    public DreieckKreisGUI() {  
        initComponents();  
    }  
  
  
    /** This method is called from within the constructor to  
     * initialize the form.  
     * WARNING: Do NOT modify this code. The content of this method is  
     * always regenerated by the Form Editor.  
     */  
    @SuppressWarnings("unchecked")  
    // <editor-fold defaultstate="collapsed" desc="Generated Code">  
    private void initComponents() {  
  
        canvas = new java.awt.Canvas();  
        jProgressBar1 = new javax.swing.JProgressBar();  
        jToggleButton1 = new javax.swing.JToggleButton();  
        jSeparator1 = new javax.swing.JSeparator();  
        Anweisungen = new javax.swing.JLabel();  
        jScrollPane1 = new javax.swing.JScrollPane();  
        jTextPane1 = new javax.swing.JTextPane();  
        ProtokollLabel = new javax.swing.JLabel();  
  
        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);  
        setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));  
  
        canvas.setBackground(new java.awt.Color(255, 255, 255));  
        canvas.addMouseListener(new java.awt.event.MouseAdapter() {  
            public void mouseReleased(java.awt.event.MouseEvent evt) {  
                canvasMouseReleased(evt);  
            }  
        });  
  
        jToggleButton1.setText("| |");  
  
        Anweisungen.setText("Anweisungen");  
  
        jScrollPane1.setBackground(new java.awt.Color(230, 230, 230));  
        jScrollPane1.setAutoscrolls(true);  
        jScrollPane1.setViewportView(jTextPane1);  
  
        ProtokollLabel.setText("Protokoll");  
  
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());  
        getContentPane().setLayout(layout);  
        layout.setHorizontalGroup(  
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
            .addGroup(layout.createSequentialGroup()  
                .addContainerGap()  
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                    .addComponent(canvas, javax.swing.GroupLayout.PREFERRED_SIZE, 616, javax.swing.GroupLayout.PREFERRED_SIZE)  
                    .addComponent(Anweisungen))  
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)  
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
                    .addComponent(ProtokollLabel)  
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)  
                    .addComponent(jSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)  
                    .addComponent(jProgressBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 204, Short.MAX_VALUE)  
                    .addComponent(jToggleButton1))  
                .addContainerGap())  
        );  
        layout.setVerticalGroup(  
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()  
                .addContainerGap()  
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)  
                    .addComponent(Anweisungen)  
                    .addComponent(ProtokollLabel))  
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)  
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)  
                    .addGroup(layout.createSequentialGroup()  
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 558, Short.MAX_VALUE)  
                        .addGap(18, 18, 18)  
                        .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)  
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)  
                        .addComponent(jToggleButton1)  
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)  
                        .addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))  
                    .addComponent(canvas, javax.swing.GroupLayout.DEFAULT_SIZE, 640, Short.MAX_VALUE))  
                .addContainerGap())  
        );  
  
        pack();  
    }// </editor-fold>  
  
private void canvasMouseReleased(java.awt.event.MouseEvent evt) {  
    int MouseX = canvas.getMousePosition().x;  
    int MouseY = canvas.getMousePosition().y;  
    switch (iPoints) {  
        case 0:  
            PointA[0] = MouseX;  
            PointA[1] = MouseY;  
            iPoints++;  
//hier soll er NUR das Canvas repainten  
            break;  
        case 1:  
            PointB[0] = MouseX;  
            PointB[1] = MouseY;  
            iPoints++;  
//hier soll er NUR das Canvas repainten  
            break;  
        case 2:  
            PointC[0] = MouseX;  
            PointC[1] = MouseY;  
            iPoints++;  
  
            Graphics g = null;  
            canvas.paint(g);  
  
//hier soll er NUR das Canvas repainten  
            break;  
        default:  
            break;  
    }  
}  
  
  
    public static void main(String args[]) {  
        java.awt.EventQueue.invokeLater(new Runnable() {  
            public void run() {  
                new DreieckKreisGUI().setVisible(true);  
            }  
        });  
    }  
  
    public void start() {  
        Anweisungen.setText("Klicken Sie auf eine Stelle, um den " + (iPoints+1) + ". Punkt festzulegen.");  
    }  
  
  
    // Variables declaration - do not modify  
    private javax.swing.JLabel Anweisungen;  
    private javax.swing.JLabel ProtokollLabel;  
    private java.awt.Canvas canvas;  
    private javax.swing.JProgressBar jProgressBar1;  
    private javax.swing.JScrollPane jScrollPane1;  
    private javax.swing.JSeparator jSeparator1;  
    private javax.swing.JTextPane jTextPane1;  
    private javax.swing.JToggleButton jToggleButton1;  
    // End of variables declaration  
  
}