Wie Sie java aktualisieren Leinwand dynamisch?

Problem: ich bin versucht, zu aktualisieren, die Leinwand mit der neuen Malerei, Objekte, basierend auf Benutzer-Aktion. Die Leinwand dosent aktualisiert.

Was ich getan habe: Der Benutzer interagiert mit dem DnD-action,Die übertragbar Objekt erreicht der Leinwand, Fordert ein update der Grafik-Methode von mir erstellt. Und die Methode verwendet einfach die bereits erstellte Grafiken 2d-Objekt und zeigt die Bilder verwenden.Ich habe checkd die DnD-action,das Objekt richtig recived auf Leinwand-Klasse und ich war in der Lage, drucken Sie Sie aus mit System.aus.println.

Einen Beispiel-code,das hat eine ähnliche Funktion wie das von mir,

Paint Klasse:

    import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JPanel;


public class PaintPanel extends JPanel{

    private Graphics2D drawImage;

    public PaintPanel()
    {

    }

    @Override
    public void paint(Graphics g) {
         drawImage = (Graphics2D) g;
         drawImage.setColor(Color.WHITE);
         drawImage.fillRect(0, 0, getWidth(), getHeight());
    }

    public void updateGraphics(int length,int width)
    {
        drawImage.setColor(Color.black);
        drawImage.drawRect(100, 150, length, width);
        repaint();
    }

}

mainframe-Klasse:

       import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class MainPaint extends JFrame{


    public MainPaint()
    {
        setTitle("test paint");
        setSize(400,400);
        setLayout(new BorderLayout());

        final PaintPanel paintPan = new PaintPanel();
        JButton testButon = new JButton("Display shape");
        add(paintPan,BorderLayout.CENTER);
        add(testButon,BorderLayout.PAGE_END);

        testButon.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                paintPan.updateGraphics(50,50);
                repaint();
            }
        });
        setVisible(true);
    }

    public static void main(String[] args)
    {
        new MainPaint();
    }

}
  • 1) Für besser zu helfen, schneller zu veröffentlichen, SSCCE. 2) würde ich davon abraten über eine AWT-Klasse name für eine benutzerdefinierte Klasse. Es kann führen zu viel Verwirrung. 3) Für JPanel diese public void paint(Graphics g) { sollte public void paintComponent(Graphics g) { 4) Die letzten 3 code-Anweisungen in der aktuellen paint - Methode hätte keine Auswirkung.
  • Ich werde nach einem funktionierenden code so bald wie möglich.Ich dachte, wenn ich poste, was ich getan habe,das könnte helfen, um zu erkennen, die Fehler oder die falsche Herangehensweise, dass ich es hier getan habe.
  • Es könnte, aber es ist einfacher/schneller, wenn es eine SSCCE. Auch die Buchung kompilierbare code macht es einfacher zu testen, eine Antwort, so Sie weniger der (höflich Husten) "ich glaube, Sie müssen.." (mögliche Lösungen) und mehr "Sie müssen.." (solutions).
  • Ich habe gerade gebucht einen funktionierenden Beispielcode der das Problem.Danke für die Antworten
  • "Ich habe gerade gebucht einen funktionierenden Beispiel-code" Huh. Warum würden Sie tun, wenn ich empfohlen, einen SSCCE? Ich werde warten, für die SSCCE.
  • was ich geschrieben ist nicht der eigentliche code,sondern nur eine Probe kurz ausführbaren code ,die, die hat das gleiche Problem.
  • was ich geschrieben ist nicht der echte code" - Wer fragte nach dem "echten code" um der Barmherzigkeit Willen? Dieser Begriff ist wieder SSCCE. Wenn Sie nicht wissen, was es bedeutet, Folgen Sie dem link und Lesen, anstatt in zufällige blinde Vermutungen.

InformationsquelleAutor Balaram26 | 2012-12-26
Schreibe einen Kommentar