2017-07-10 4 views
2

Wie zeichnet man unter einem Etikett/Knopf? -javaAWT Label/Button/Textfeld + malen?

Ich wollte ein Koordinatenberechnungsprogramm für ax^2 + bx + c schreiben, aber das ist nicht der wichtige Punkt ...

Ich möchte die Grafik nur über AWT ziehen und die Farbe Methode. (noch nicht implementiert), aber ich kann die Paint-Methode nicht in den Vordergrund stellen. Kannst du mir bitte helfen, das Problem zu beheben, damit die Farbe zumindest sichtbar ist?

Ich habe einen Überblick über meine Gedanken beigefügt. Sorry für mein schlechtes Englisch

idea

import java.awt.Button; 
import java.awt.Canvas; 
import java.awt.FlowLayout; 
import java.awt.Frame; 
import java.awt.Graphics; 
import java.awt.Label; 
import java.awt.Panel; 
import java.awt.TextField; 

public class MyWindow extends Frame { 
    Frame frame; 
    Label l1; 
    Label l2; 
    Label l3; 
    Button b1; 
    TextField t1; 
    TextField t2; 
    TextField t3; 
    Panel panel; 
    Canvas canvas; 

    MyWindow() { 
     frame = new Frame("GraphPlotter"); 
     frame.setSize(800, 800); 
     frame.setLayout(new FlowLayout()); 

     l1 = new Label("f(x)= "); 
     l2 = new Label(" x^2 + "); 
     l3 = new Label(" x + "); 

     t1 = new TextField("1"); 
     t2 = new TextField("2"); 
     t3 = new TextField("3"); 

     b1 = new Button("Plot"); 


     frame.add(l1); 
     frame.add(t1); 
     frame.add(l2); 
     frame.add(t2); 
     frame.add(l3); 
     frame.add(t3); 
     frame.add(b1); 
     frame.setVisible(true); 


    } 

    public void paint(Graphics g) { 
     g.fillRect(10, 10, 300, 300); // ist im "Hintergrund"?? 
    } 
} 

` public class Start { 

    public static void main(String[] args) { 
     MyWindow window = new MyWindow(); 
    } 

} 

`

Antwort

0

ich dieses Problem wie 2 Monate gelöst oder so, aber ich Ich bin im Moment ein wenig motiviert, also werde ich meine Frage selbst beantworten. Info: repaint() ruft paint auf, so dass Sie diese Methode nicht selbst implementieren müssen.

in der Aufgabe, die ich zu vergessen:

  • Erzeugen Sie eine Leinwand
  • -use Layout-Manager
  • -Rufen malen mit den Methoden neu streichen(); oder update();

Die Frage war nur, wie man malt, und dies sollte nach der Lektüre folgenden Code klar sein:

package delete; 

import java.awt.BorderLayout; 
import java.awt.FlowLayout; 
import java.awt.Frame; 
import java.awt.Label; 
import java.awt.Panel; 
import java.awt.TextField; 

public class AwtFrame extends Frame { 
    AwtCanvas c; 
    Panel p1; 
    Label la_ax2, la_bx, la_c; 
    TextField tf_Ax2, tf_bx, tf_c; 

    public AwtFrame() { 
     super("paint example."); 
     this.setSize(800, 800); 

     initComp(); 
     addComp(); 

     // TODO: write a graph drawing method 
     c.repaint(); // paints a line of your graph 

     this.setVisible(true); 
    } 

    public void initComp() { 
     p1 = new Panel(); 
     la_ax2 = new Label("x^2 "); 
     la_bx = new Label("+ x "); 
     la_c = new Label("+ c "); 

     tf_Ax2 = new TextField(0); 
     tf_bx = new TextField(0); 
     tf_c = new TextField(0); 
     c = new AwtCanvas(); 
    } 

    public void addComp() { 
     this.setLayout(new BorderLayout()); 
     p1.setLayout(new FlowLayout()); 

     this.add(p1, BorderLayout.NORTH); 
     this.add(c, BorderLayout.CENTER); 

     p1.add(tf_Ax2); 
     p1.add(la_ax2); 
     p1.add(tf_bx); 
     p1.add(la_bx); 
     p1.add(tf_c); 
     p1.add(la_c); 
    } 

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



package delete; 

import java.awt.Canvas; 
import java.awt.Graphics; 
import java.util.LinkedList; 

public class AwtCanvas extends Canvas { 
// LinkedList<ToImplement> coords = new LinkedList<ToImplement>(); 


    // TODO: implement plotter 
    public void paint(Graphics g) { 
     g.drawLine(40, 40, 100, 100); 
     g.drawLine(54, 22, 300, 200); 
    } 

} 
0

Sie nicht eine Farbe festgelegt haben, bevor

g.fillRect(10, 10, 300, 300); 
+0

seine nicht funktioniert. Wenn ich Vordergrund- und Hintergrundfarbe einstelle, bleibt die Farbe unsichtbar – John