tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
522
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Xym Xym ist offline Mitglied Gold
    Registriert seit
    Mar 2011
    Beiträge
    101
    Hi,

    ich versuch so 'ne Art paint programm zu machen .

    Das habe ich bis jetzt:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    
    import java.awt.*;
    import java.awt.event.*;
     
    public class Datenbank extends Frame
    {
      int neu=0;
     
     
      private MyWindowListener close = new MyWindowListener();
      private Button Neu = new Button();
      private Button Linie = new Button();
      
      public Datenbank()
      {
        super("Paint");
        this.setSize(800,600);
        this.show();
        this.addWindowListener(close);
        Panel cp = new Panel(null);
        add(cp);
        Neu.setBounds(10, 10, 60, 20);
        Neu.setLabel("Neu");
        Linie.setBounds(100,10,60,20);
        Linie.setLabel("Linie");
        cp.add(Neu);
        cp.add(Linie);
      }
     
      public boolean handleEvent (Event e)
      {
        if(e.target == Neu)
        {
          neu=1;
          System.out.println(neu);
        }
        return true;
      }
     
      public void paint ( Graphics g)
      {
       if(neu == 1)
       {
        g.setColor(Color.RED);
        g.fillRect(0,100,800,500);
       }
      }
      public static void main(String args[])
      {
        Datenbank f = new Datenbank();
      }
    }

    Warum kommt das Rote Viereck nicht, wenn ich auf den Neu Button klicke****
     

  2. #2
    Avatar von zerix
    zerix zerix ist offline Hausmeister
    tutorials.de Moderator
    Registriert seit
    May 2005
    Beiträge
    4.335
    Hallo,

    du hast da einiges gemacht, was man nicht machen sollte.
    Wenn man auf Actions von Buttons reagieren möchte, überschreibt man nicht die handleEvent-Methode. Diese ist sowieso deprecated und sollte nicht mehr verwendet werden.
    Wenn du auf den Klick bei Buttons reagieren möchtest, solltest du den ActionListener verwenden.

    Dann würde ich dir empfehlen statt AWT und der Klasse Frame, Swing und die Klasse JFrame zu verwenden.

    Du solltest auch nicht die paint-Methode des Fensters überschreiben. Sondern ein JPanel oder eine JComponent überschreiben und dort die Methode paintComponent überschreiben. Diese Component solltest du dann dem Fenster hinzufügen.

    Da es so aussieht, dass die noch einige Grundlagen fehlen, poste ich dir noch einen Link. Da kannst du dir mal die Grundlagen anlesen.
    http://openbook.galileocomputing.de/...6c4544f391b02e

    Gruß

    Sascha
     
    Es ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)

  3. #3
    Xym Xym ist offline Mitglied Gold
    Registriert seit
    Mar 2011
    Beiträge
    101
    Danke für den Rat die Sachen umzustellen. Wusste nicht das er veraltet ist.
    Es sieht nun so aus
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
     
      public class paint extends JFrame
      {
        int neu=1;
       public paint()
       {
         super(paint.class.getName());
         Container cp = getContentPane();
         cp.setLayout(null);
         
         JButton button = new JButton("Neu");
         button.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent e) {
            System.out.println(neu);
     
           }
         });
         button.setBounds(10,10,100,30);
         cp.add(button);
         setSize(600, 480);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         setVisible(true);
       }
     
        public void paintComponent(Graphics g)
        {
     
         g.setColor(Color.red);
         g.drawOval(0, 0, 20, 20);
        }
       public static void main(String[] argv) {
         new paint();
       }
      }
    Bekomme aber immer noch nicht die Grafik.
    Was muss ich dafür ändern?
     

  4. #4
    genodeftest genodeftest ist offline Mitglied Brillant
    Registriert seit
    Jun 2009
    Beiträge
    870
    1. Klassen beginnen meist mit Großbuchstaben, Methoden mit Kleinbuchstaben (das erleichtert das Lesen von Code)

    2. Du sollst nicht die Methode paintComponent() von dem JFrame überschreiben, sondern von einem JPanel oder JComponent, den du dem JFrame hinzufügst.

    3. benutzt man meistens einen LayoutManager, z.B. BorderLayout. Den JButton oben kannst du dann in eine horizontale Box packen.

    Das ganze kann dann z.B. so aussehen:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
     
    import javax.swing.*;
     
    public class Paint extends JFrame
    {
        int neu = 1;
     
        public Paint()
        {
            super(Paint.class.getName());
            final Container cp = getContentPane();
            cp.setLayout(new BorderLayout());
            // cp.setLayout(null);
            
            final JButton button = new JButton("Neu");
            button.addActionListener(new ActionListener()
            {
                public void actionPerformed(final ActionEvent e)
                {
                    System.out.println(Paint.this.neu);
                    
                }
            });
            
            final Box menuBox = new Box(BoxLayout.X_AXIS);
            menuBox.add(button);
            
            // button.setBounds(10, 10, 100, 30);
            cp.add(menuBox, BorderLayout.NORTH);
            
            final AnyPanel panel = new AnyPanel();
            cp.add(panel, BorderLayout.CENTER);
            setSize(600, 480);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setVisible(true);
        }
        
        public static void main(final String[] argv)
        {
            new Paint();
        }
    }
     
     
    class AnyPanel extends JPanel
    {
        
        @Override
        public void paintComponent(final Graphics g)
        {
            super.paintComponents(g);
            g.setColor(Color.red);
            g.drawOval(0, 0, 20, 20);
        }
    }
    Geändert von genodeftest (10.03.11 um 18:11 Uhr)
     
    Code bitte so einfügen: [java]System.out.println("Hallo");[/java] (Analog für andere Programmiersprachen)
    Code java:
    1
    
    System.out.println("Hallo");
    hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.
    ___________
    Ubuntu Bug #1: Microsoft has a majority market share
    Casecon: Projekt leiser Käse

Ähnliche Themen

  1. Swing paint() update() Problem
    Von Kostik im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 22.12.08, 11:15
  2. paint - JPanel Problem
    Von marcbielik im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 7
    Letzter Beitrag: 01.05.07, 12:50
  3. Problem mit Graphics und Paint
    Von MC_Straßenköter im Forum .NET Archiv
    Antworten: 6
    Letzter Beitrag: 27.05.05, 11:05
  4. Ink'n Paint Problem
    Von genesys im Forum 3D Studio Max
    Antworten: 2
    Letzter Beitrag: 29.04.04, 22:00
  5. Problem mit Deep Paint 3D 2
    Von blubber im Forum 3D Studio Max
    Antworten: 1
    Letzter Beitrag: 08.12.02, 16:50