ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
522
522
EMPFEHLEN
-
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****
-
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ß
SaschaEs ist schwer Allwissend zu sein. Aber ich komme damit klar. ;-)
-
Danke für den Rat die Sachen umzustellen. Wusste nicht das er veraltet ist.
Es sieht nun so aus
Bekomme aber immer noch nicht die Grafik.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(); } }
Was muss ich dafür ändern?
-
10.03.11 18:08 #4
- 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)
hilfreich zu Java: Really Big Index, Java ist auch eine Insel Band 1 und Band 2.Code java:1
System.out.println("Hallo");
___________
Ubuntu Bug #1: Microsoft has a majority market share
Casecon: Projekt leiser Käse
Ähnliche Themen
-
Swing paint() update() Problem
Von Kostik im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 4Letzter Beitrag: 22.12.08, 11:15 -
paint - JPanel Problem
Von marcbielik im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 7Letzter Beitrag: 01.05.07, 12:50 -
Problem mit Graphics und Paint
Von MC_Straßenköter im Forum .NET ArchivAntworten: 6Letzter Beitrag: 27.05.05, 11:05 -
Ink'n Paint Problem
Von genesys im Forum 3D Studio MaxAntworten: 2Letzter Beitrag: 29.04.04, 22:00 -
Problem mit Deep Paint 3D 2
Von blubber im Forum 3D Studio MaxAntworten: 1Letzter Beitrag: 08.12.02, 16:50





Zitieren

Login





