2D-Grafik Zeichen werden über unabhängingen JRadioButton nicht gefüllt

Alex2013

Bekanntes Mitglied
Hallo Leute,

mittlerweile klappt das Zeichnen etc. in Java echt gut. Über folgende Zeilen wird das Objekt auch direkt gezeichnet, ohne vorher den "Status" in irgendeiner Form zu ändern oder einen Knopf zu drücken.
Allerdings kann ich aktuell keinen JRadioButton hinzufügen, der unabhängig von den anderen agiert und die Objekte ohne eine weitere Aktion füllt.
Wisst ihr hier zufällig weiter?

Durch Unterstützung bin ich das letzte Mal an diese Form der actionperformed Methode und die Funktion activate Button gekommen. Diese sollten also erhalten bleiben.
Es soll an einer Stelle ein JRadioButton angefügt werden, der die Objekte wie gesagt, ohne eine weitere Aktion/Operation ausfüllt.
PS: Die activateButtons stammt dabei im Gegensatz zur activateButton von mir. Auch die half nicht weiter.

Weiß hier zufällig jemand Abhilfe? Bisher habe ich hierzu noch keine Lösunge gefunden.
Ich versuchs aber weiter.
Vielen Dank schon einmal.

Hier ist der Code
Java:
public class anzeigen extends JFrame implements ActionListener{
 
    JRadioButton sign1=new JRadioButton("oval"),sign2=new JRadioButton("rect"),
            sign3=new JRadioButton("double oval"),empty=new JRadioButton("empty"),
            fuellen=new JRadioButton("füllen");

    JPanel panel=new JPanel();
    ButtonGroup bg=new ButtonGroup(),bg2=new ButtonGroup();
    public static final int BUTTONS=4;
    public static final int BUTTON_1=0;
    public static final int BUTTON_2=1;
    public static final int BUTTON_3=2;
    public static final int BUTTON_4=3;
    JRadioButton[] btns=new JRadioButton[BUTTONS];
 
    Zeichnen z=new Zeichnen();
    Container c;
 
    public anzeigen() {
        c=getContentPane();
        setSize(1200, 800);
        for(int i=0;i<BUTTONS;i++){
            btns[i]=new JRadioButton();
            btns[0]=new JRadioButton();
            btns[0]=sign1;
            btns[1]=new JRadioButton();
            btns[1]=sign2;
            btns[2]=new JRadioButton();
            btns[2]=sign3;
            btns[3]=new JRadioButton();
            btns[3]=empty;
            bg.add(btns[i]);
            btns[i].addActionListener(this);
            panel.add(btns[i]);
        }
        panel.add(fuellen);
        c.add(panel,BorderLayout.SOUTH);
        c.add(z,BorderLayout.CENTER);
        setLocation(0, 0);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
 
    private void activateButton(JRadioButton button,int auswahl){
        button.setSelected(true);
        z.setAuswahl(auswahl);
    }
 
    private void activateButtons(JRadioButton button,int auswahl,boolean stat){
//        button.setSelected(true);
        z.setAuswahl(auswahl);
        z.setFuellstatus(true);
    }
 
    public static void main(String[] args) {
        new anzeigen();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        Object btn=e.getSource();
        for(JRadioButton b : btns)
            b.setSelected(false);
        if(btn==btns[BUTTON_1])
            activateButton(btns[BUTTON_1],BUTTON_1);
        else if((btn==btns[BUTTON_1])&&(fuellen.isEnabled()))
            activateButtons(btns[BUTTON_1], BUTTON_1, z.status==true);
        if(btn==btns[BUTTON_2])
            activateButton(btns[BUTTON_2],BUTTON_2);
        else if((btn==btns[BUTTON_2])&&(z.status==true))
            activateButtons(btns[BUTTON_2], BUTTON_2, z.status);
        if(btn==btns[BUTTON_3])
            activateButton(btns[BUTTON_3],BUTTON_3);
        else if((btn==btns[BUTTON_3])&&(z.status==true))
            activateButtons(btns[BUTTON_3], BUTTON_3, z.status);
        if(btn==btns[BUTTON_4])
            activateButton(btns[BUTTON_4],BUTTON_4);
        repaint();
    }
}

class Zeichnen extends JPanel{
    int auswahl;
    boolean status=false;
 
    public void setAuswahl(int a){
        auswahl=a;
    }
 
    public void setFuellstatus(boolean st){
        status=st;
    }
 
    public Zeichnen() {
        auswahl=0;
//        status=false;
        setVisible(true);
    }
 
    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub
        super.paint(g);
        switch (auswahl) {
        case 0:
            if(status)
            g.drawOval(30, 30, 130, 130);
            else
                g.fillOval(30, 30, 130, 130);
            break;
        case 1:
            if(status)
            g.drawRect(40, 40, 440, 640);
            else
                g.fillRect(40, 40, 440, 640);
            break;
        case 2:
            if(status){
            g.drawOval(30, 30, 130, 130);
            g.drawOval(190, 30, 130, 130);
            }else{
                g.fillOval(30, 30, 130, 130);
                g.fillOval(190, 30, 130, 130);
            }
            break;
        case 3:
            g.setColor(Color.WHITE);
            g.fillRect(0,0,getWidth(),getHeight());
            break;
        default:
            auswahl=4;
            break;
        }
    }

}
 
Zuletzt bearbeitet von einem Moderator:

MoxxiManagarm

Top Contributor
Hast du plain-Tags in deiner Ausführung oder warum funktionieren deine code Tags nicht?

Anyway, du vermischst Schleifen mit fixen Zugriffen. Und du brauchst nur ein, ein Array von JRadioButtons oder einzelne Objekte. Aber bitte nicht beides.
Java:
for(int i = 0; i<BUTTONS; i++){ // du brauchst i nie!!
            btns = new JRadioButton(); // seit wann kann ein Array ein JRadioButton sein?
            btns[0]=new JRadioButton(); //überflüssig, gilt auch für die anderen
            btns[0]=sign1; //ok, aber wozu sign1 dann zwischenspeicher? entweder das Array, oder nur die Einzelobjekte
            btns[1]=new JRadioButton();
            btns[1]=sign2;
            btns[2]=new JRadioButton();
            btns[2]=sign3;
            btns[3]=new JRadioButton();
            btns[3]=empty;
            bg.add(btns);
            btns.addActionListener(this); // du musst schon jedem einzelnen Button den Listener hinzufügen
            panel.add(btns); // auch bitte einzeln hinzufügen
        }
In deinem Fall rate ich von dem Array ab, mit dem Array dann auch die statischen Indexe rausschmeißen. Besser du fügst den einzelnen JRadioButtons's einen ActionCommand hinzu und arbeitest dann beim Zeichnen mit diesem.
Java:
String command = buttonGroup.getSelection().getActionCommand();

Es soll an einer Stelle ein JRadioButton angefügt werden, der die Objekte wie gesagt, ohne eine weitere Aktion/Operation ausfüllt.

So richtig kapiere ich es nicht, was du willst. Best guess: Ich gehe davon aus, dass du 2 Gruppen haben willst, eine für die Form und eine für leer/voll. Aber dann musst du dir auch 2 unabhängige Gruppen anlegen. Wobei bei voll/leer eventuell eine JCheckBox sinnvoll wäre.

Wieso aktivierst du noch Buttons manuell per actionPerformed? Das macht doch schon die ButtonGroup. Die actionPerformed ist nur noch dafür da das Neuzeichnnen anzustoßen. Bitte hier keine zusätzliche Statusänderungen machen. Den Status der Felder musst nu nicht immer zwischenspeichern, sondern darauf kann die Zeichenmethode direkt zugreifen. Die Objekte selber/die Gruppen halten doch schon ihren Status.

paint sollte man nicht überschreiben, bitte überschreibe stattdessen paintComponent und bitte verwende einen Klassennamen mit großem Anfangsbuchstaben
 

MoxxiManagarm

Top Contributor
Hier noch ein kleines Beispiel zu meinen Anmerkungen:
Java:
package groups;

import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;


public class GroupExample extends JFrame implements ActionListener {
    
    private ButtonGroup formGroup;
    private JRadioButton oval;
    private JRadioButton sharprect;
    private JRadioButton roundrect;
  
    private JCheckBox fillForm;
  
    private JPanel operationPanel;
  
    private JComponent display;
  
    public GroupExample() {
        setDefaultCloseOperation(EXIT_ON_CLOSE);
      
        Container c = getContentPane();
        c.setLayout(new GridLayout(1, 2));
      
        operationPanel = new JPanel();
        operationPanel.setLayout(new GridLayout(4, 1));
      
        formGroup = new ButtonGroup();
      
        oval = new JRadioButton("oval");
        oval.setActionCommand("oval");
        oval.setSelected(true);
        oval.addActionListener(this);
        operationPanel.add(oval);
        formGroup.add(oval);
      
        sharprect = new JRadioButton("sharprect");
        sharprect.setActionCommand("sharprect");
        sharprect.addActionListener(this);
        operationPanel.add(sharprect);
        formGroup.add(sharprect);
      
        roundrect = new JRadioButton("roundrect");
        roundrect.setActionCommand("roundrect");
        roundrect.addActionListener(this);
        operationPanel.add(roundrect);
        formGroup.add(roundrect);
      
        fillForm = new JCheckBox("fill form");
        fillForm.addActionListener(this);
        operationPanel.add(fillForm);
      
        c.add(operationPanel);      
      
        display = new JComponent() {
            @Override public void paintComponent(Graphics g) {
                g.setColor(Color.BLACK);
              
                String command = formGroup.getSelection().getActionCommand();
              
                switch(command) {
                    case "oval":
                        if(!fillForm.isSelected()) g.drawOval(30, 30, 140, 140);
                        else g.fillOval(30, 30, 140, 140);
                        break;
                    case "sharprect":
                        if(!fillForm.isSelected()) g.drawRect(30, 30, 140, 140);
                        else g.fillRect(30, 30, 140, 140);
                        break;
                    case "roundrect":
                        if(!fillForm.isSelected()) g.drawRoundRect(30, 30, 140, 140, 10, 10);
                        else g.fillRoundRect(30, 30, 140, 140, 10, 10);
                        break;
                    default:
                        System.out.println("Keine gültige Selektion..");
                }
            }
        };
        display.setPreferredSize(new Dimension(200, 200));
        c.add(display);
      
        pack();
    }
  
    public static void main(String[] args) {
        new GroupExample().setVisible(true);
    }

    @Override
    public void actionPerformed(ActionEvent ae) {
        display.repaint();
    }
}
 

mihe7

Top Contributor
mittlerweile klappt das Zeichnen etc. in Java echt gut
Ach, das klappt schon lange sehr gut :)

Habe Deinen Code mal ein wenig überarbeitet:
Java:
public class anzeigen extends JFrame {
    public static final int BUTTON_1=0;
    public static final int BUTTON_2=1;
    public static final int BUTTON_3=2;
    public static final int BUTTON_4=3;

    Zeichnen z=new Zeichnen();

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

    public anzeigen() {
        setSize(1200, 800);
        add(createButtonPanel(), BorderLayout.SOUTH);
        add(z,BorderLayout.CENTER);
        setLocation(0, 0);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private JPanel createButtonPanel() {
        JPanel panel = new JPanel();

        addButtonGroup(panel, createRadioButtons());

        JCheckBox fill = new JCheckBox("fill");
        fill.setSelected(true);
        fill.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                z.setFuellstatus(e.getStateChange() == ItemEvent.DESELECTED);
            }
        });
        panel.add(fill);

        return panel;
    }

    private JRadioButton[] createRadioButtons() {
        return new JRadioButton[]{
            new JRadioButton(new AuswahlAction("oval", BUTTON_1)),
            new JRadioButton(new AuswahlAction("rect", BUTTON_2)),
            new JRadioButton(new AuswahlAction("double oval", BUTTON_3)),
            new JRadioButton(new AuswahlAction("empty", BUTTON_4))
        };
    }

    private void addButtonGroup(JPanel panel, JRadioButton[] buttons) {
        ButtonGroup bg=new ButtonGroup();
        for (JRadioButton button : buttons) {
            panel.add(button);
            bg.add(button);
        }
    }

    private class AuswahlAction extends AbstractAction {
        private int auswahl;
        public AuswahlAction(String name, int auswahl) {
            super(name);
            this.auswahl = auswahl;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            z.setAuswahl(auswahl);
        }
    }
}

Und in Klasse Zeichnen bitte in setAuswahl und setFuellstatus am Ende jeweils ein repaint(); einfügen.
 
Zuletzt bearbeitet:

Alex2013

Bekanntes Mitglied
@MoxxiManagarm und @mihe7 :
Vielen Dank euch beiden! :)

Ich habe den Code von euch gerade einmal getestet und ich muss sagen: Er funktioniert exakt so, wie ich es mir vorgestellt habe.
Der einzige Unterschied ist (das habe ich mit verschiedenen Parametern getestet), dass der von MoxxiManagarm sogar noch etwas schneller reagiert.
Sprich beim neuen Programmaufruf habe ich es mit nicht selektierten und selektierten Checkboxes getestet. Hier reagiert dein Code MoxxiManagarm immer noch exakt so, wie er es soll, beim anderen Code ist ein weiterer Klick erforderlich.
Das stört aber nicht wirklich (höchstens Endanwender ;))

TOP!
 

Alex2013

Bekanntes Mitglied
@mihe7: damit meine ich, dass zumindest beim Start des Programms bei deinem Code ein weiterer Klick für das gewünschte Ergebnis erforderlich ist.
Ich habe das gerade einmal mit Anpassungen am Code von dir und @MoxxiManagarm überprüft. Wenn ich dein Programm starte, muss ich zumindest die checkbox einmal enthaken und wieder anhaken, damit die Füllung erscheint.
Das ist auch nur beim Start so und lässt sich zumindest nicht durch kleine Codeseitige Anpassungen meinerseits ausmerzen.

Beim Code von Moxximanagarm dagegen funktioniert es auch direkt nach dem Programmstart.
Hier habe ich es auch mit Code Anpassungen getestet. Es funktioniert weiterhin.

Den Computer hatte ich zwischen beiden Code "Tests" einmal neugestartet.

Aber wie gesagt, ist an sich nicht erwähnenswert, da es sich nur um einen klick beim Start handelt.
 

MoxxiManagarm

Top Contributor
Du brauchst das nicht so vergleichen, ich hatte nur ein Beispiel gemacht um meine Anmerkungen aufzuzeigen. Dir sei freie Hand für alles weitere gelassen.

Moxximanagarm lädt die Zeichnungen direkt im Konstruktor über die JComponent und paintcomponent.
Die Zeichnung wird dort nicht geladen. Sie wird erst geladen, wenn paintComponent aufgerufen wird. Es ist eine Anonyme Klasse mit überschriebener paintComponent Methode. Aber ja ich habs sie dort ausformuliert, denn ich habe für mein Beispiel eine definierte Klasse nicht als notwendig erachtet. Könnte man aber auch machen - wenn man wollte.

Ich finde den Gedanken mit der AbstractAction ehrlich gesagt auch ganz nett. Habe ich so noch nicht gesehen, kann aber sicherlich auch sehr sinnvoll sein.
 
Zuletzt bearbeitet:

mihe7

Top Contributor
damit meine ich, dass zumindest beim Start des Programms bei deinem Code ein weiterer Klick für das gewünschte Ergebnis erforderlich ist.
Dann hast Du anderen Code als ich :) Hm... hast Du das repaint bei Zeichnen#setAuswahl und Zeichnen#setFuellstatus eingefügt?

Was mir gerade aufgefallen ist: anfangs ist oval nicht ausgewählt. Das ließe sich mit buttons[0].setSelected(true); am Ende von addButtonGroup beheben.
 

Alex2013

Bekanntes Mitglied
@MoxxiManagarm: das soll so kein Vergleich sein. Denn die Programme sind ja auch unterschiedlich und daher ist das etwas anders.

Aber ja, es gibt viele Möglichkeiten ;)

@mihe7: Vlt habe ich auch eine andere Java Version. Kann ja an vielem liegen.
Aber im Grunde klappt es ja auch ;):)
 

mihe7

Top Contributor
Vlt habe ich auch eine andere Java Version. Kann ja an vielem liegen.
Das ist etwas ganz simples: eine/n Action(Listener), die/der einen Wert setzt und anschließend ein repaint() aufgerufen wird.


Kannst Du mal den kompletten Code posten und die Java-Version dazu, mich würde das nämlich schon interessieren, warum das nicht funktioniert. Sollte es nämlich tatsächlich an der Java-Version liegen, dann stehen die Chancen gut, dass es sich um einen Bug handelt.
 

Alex2013

Bekanntes Mitglied
Kann ich gerne machen, sobald ich an einem Rechner sitze.
Ich hoffe der Code ist noch ein und der selbe. Sonst fängt copy n Paste wieder an. Sollte heute Abend noch drin sein.
 

MoxxiManagarm

Top Contributor
Ich hatte Grundlagen der Programmierung in der Ausbildung. Dort war aber zugegebener Maßen alles recht oberflächlich. Jedoch hat mir die Programmierung Spaß gemacht und ich habe mich privat gebildet.

Damals gab es auf tutorials.de das sogenannte Coding-Quiz
https://www.tutorials.de/forums/coding-quiz.397/
(Bitte nicht als Fremdwerbung sehen, dient nur der Erläuterung)
Ich habe mich einigen Herausforderungen gestellt auch nach der eigentlichen Phase.

Darüber hinaus kann ich auch codingbat empfehlen
https://codingbat.com/java

Ansonsten war ich halt in den Foren aktiv und habe versucht Probleme anderer zu verstehen und zu lösen.
Was ich nicht verstanden habe habe ich gegooglet.

Ich habe nie ein Buch dafür gelesen.
 

Alex2013

Bekanntes Mitglied
@mihe7 : hier ist der komplette Code

Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.AbstractAction;
import javax.swing.ButtonGroup;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;



public class anzeigen extends JFrame {
    public static final int BUTTON_1=0;
    public static final int BUTTON_2=1;
    public static final int BUTTON_3=2;
    public static final int BUTTON_4=3;

    Zeichnen z=new Zeichnen();

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

    public anzeigen() {
        setSize(1200, 800);
        add(createButtonPanel(), BorderLayout.SOUTH);
        add(z,BorderLayout.CENTER);
        setLocation(0, 0);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private JPanel createButtonPanel() {
        JPanel panel = new JPanel();

        addButtonGroup(panel, createRadioButtons());

        JCheckBox fill = new JCheckBox("fill");
        fill.setSelected(true);
        fill.addItemListener(new ItemListener() {
            @Override
            public void itemStateChanged(ItemEvent e) {
                z.setFuellstatus(e.getStateChange() == ItemEvent.DESELECTED);
            }
        });
        panel.add(fill);

        return panel;
    }

    private JRadioButton[] createRadioButtons() {
        return new JRadioButton[]{
            new JRadioButton(new AuswahlAction("oval", BUTTON_1)),
            new JRadioButton(new AuswahlAction("rect", BUTTON_2)),
            new JRadioButton(new AuswahlAction("double oval", BUTTON_3)),
            new JRadioButton(new AuswahlAction("empty", BUTTON_4))
        };
    }

    private void addButtonGroup(JPanel panel, JRadioButton[] buttons) {
        ButtonGroup bg=new ButtonGroup();
        for (JRadioButton button : buttons) {
            panel.add(button);
            bg.add(button);
        }
    }

    private class AuswahlAction extends AbstractAction {
        private int auswahl;
        public AuswahlAction(String name, int auswahl) {
            super(name);
            this.auswahl = auswahl;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            z.setAuswahl(auswahl);
        }
    }
}


class Zeichnen extends JPanel{
    int auswahl;
    boolean status=true;
  
    public void setAuswahl(int a){
        auswahl=a;
        repaint();
    }
  
    public void setFuellstatus(boolean st){
        status=st;
        repaint();
    }
  
    public Zeichnen() {
        auswahl=0;
//        status=false;
        setVisible(true);
    }
  
    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub
        super.paint(g);
        switch (auswahl) {
        case 0:
            if(status)
            g.drawOval(30, 30, 130, 130);
            else
                g.fillOval(30, 30, 130, 130);
            break;
        case 1:
            if(status)
            g.drawRect(40, 40, 440, 640);
            else
                g.fillRect(40, 40, 440, 640);
            break;
        case 2:
            if(status){
            g.drawOval(30, 30, 130, 130);
            g.drawOval(190, 30, 130, 130);
            }else{
                g.fillOval(30, 30, 130, 130);
                g.fillOval(190, 30, 130, 130);
            }
            break;
        case 3:
            g.setColor(Color.WHITE);
            g.fillRect(0,0,getWidth(),getHeight());
            break;
        default:
            auswahl=4;
            break;
        }
    }
}

Wegen der Auskommentierung von dem Status im Zeichnen Konstruktor musst du dir keine Gedanken machen. Ich habe es mit verschiedenen Varianten getestet.

-> Ich korrigiere: Java (Eclipse Version Luna)Version 1.8 (Compiler Level)
 
Zuletzt bearbeitet:

mihe7

Top Contributor
@Alex2013 Danke.

Wenn ich den Status im Konstruktor auf false setze, dann funktioniert es genauso, wie es mMn sein soll (wenn man mal davon absieht, dass "oval" eingangs nicht gesetzt ist).

1. Aufrufen: die Checkbox ist gesetzt, der Kreis wird gefüllt angezeigt. Klick auf Checkbox: Kreis wird leer dargestellt.
2. Aufrufen: die Checkbox ist gesetzt, der Kreis wird gefüllt angezeigt. Klick auf rect: Rechteck wird dargestellt.

Soll anfangs der Spaß nicht gefüllt angezeigt werden, darf natürlich weder der Status auf false gesetzt noch fill.setSelected(true) ausgeführt werden.
 

Alex2013

Bekanntes Mitglied
@mihe7: ich denke mal, dass, selbst wenn es bei mir vlt etwas anders laufen sollte, es ja letztendlich auch nur kinkerlitzchen sind. Also Nicht erwähnenswert .

Beide Programme laufen super.
Allerdings versuche ich gerade sie zu erweitern ;)
 

mihe7

Top Contributor
ich denke mal, dass, selbst wenn es bei mir vlt etwas anders laufen sollte, es ja letztendlich auch nur kinkerlitzchen sind. Also Nicht erwähnenswert .
Wenn dieses Miniprogramm bzgl. der Funktionalität bei Dir und mir unterschiedlich läuft, dann ist das nicht nur erwähnenswert, dann wäre das ein klarer Fehler - entweder in meinem Code oder in der Java-Implementierung.

Kannst Du mal kurz die folgenden Schritte mit dem unten stehenden Code testen und schreiben, ob bzw. wo es hakt? Danke.

1. Programm starten
2. Ein Fenster mit einem ausgefüllten Kreis erscheint, der Radio-Button "oval" und die Checkbox "fill" sind ausgewählt.
3. Auf "fill" klicken (entfernt den Haken)
4. Der Kreis ist nicht mehr ausgefüllt
5. Programm schließen
6. Programm starten
7. Ein Fenster mit einem ausgefüllten Kreis erscheint, der Radio-Button "oval" und die Checkbox "fill" sind ausgewählt.
8. Auf Radio-Button "rect" klicken
9. Das ausgefüllte Rechteck erscheint.
10. Auf "fill" klicken (entfernt den Haken)
11. Das Rechteck erscheint nun nicht mehr ausgefüllt.

Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.event.*;

public class anzeigen extends JFrame {
    public static final int BUTTON_1=0;
    public static final int BUTTON_2=1;
    public static final int BUTTON_3=2;
    public static final int BUTTON_4=3;

    Zeichnen z=new Zeichnen();

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

    public anzeigen() {
        setSize(1200, 800);
        add(createButtonPanel(), BorderLayout.SOUTH);
        add(z, BorderLayout.CENTER);
        add(z,BorderLayout.CENTER);
        setLocation(0, 0);
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    private JPanel createButtonPanel() {
        JPanel panel = new JPanel();

        addButtonGroup(panel, createRadioButtons());

        JCheckBox fill = new JCheckBox("fill");
        fill.setSelected(true);
        fill.addItemListener(e -> z.setFuellstatus(e.getStateChange() == ItemEvent.DESELECTED));
        panel.add(fill);

        return panel;
    }

    private JRadioButton[] createRadioButtons() {
        return new JRadioButton[]{
            new JRadioButton(getAuswahlAction("oval", BUTTON_1)),
            new JRadioButton(getAuswahlAction("rect", BUTTON_2)),
            new JRadioButton(getAuswahlAction("double oval", BUTTON_3)),
            new JRadioButton(getAuswahlAction("empty", BUTTON_4))
        };
    }

    private void addButtonGroup(JPanel panel, JRadioButton[] buttons) {
        ButtonGroup bg=new ButtonGroup();
        for (JRadioButton button : buttons) {
            panel.add(button);
            bg.add(button);
        }
        buttons[0].setSelected(true);
    }

    private Action getAuswahlAction(String name, int auswahl) {
        return new AbstractAction(name) {
            @Override
            public void actionPerformed(ActionEvent e) {
                z.setAuswahl(auswahl);
            }
        };
    }
}

class Zeichnen extends JPanel{
    int auswahl;
    boolean status=false;

    public void setAuswahl(int a){
        auswahl=a;
        repaint();
    }

    public void setFuellstatus(boolean st){
        status=st;
        repaint();
    }

    @Override
    public void paint(Graphics g) {
        // TODO Auto-generated method stub
        super.paint(g);
        switch (auswahl) {
        case 0:
            if(status)
                g.drawOval(30, 30, 130, 130);
            else
                g.fillOval(30, 30, 130, 130);
            break;
        case 1:
            if(status)
                g.drawRect(40, 40, 440, 640);
            else
                g.fillRect(40, 40, 440, 640);
            break;
        case 2:
            if(status) {
                g.drawOval(30, 30, 130, 130);
                g.drawOval(190, 30, 130, 130);
            } else {
                g.fillOval(30, 30, 130, 130);
                g.fillOval(190, 30, 130, 130);
            }
            break;
        case 3:
            g.setColor(Color.WHITE);
            g.fillRect(0,0,getWidth(),getHeight());
            break;
        default:
            auswahl=4;
            break;
        }
    }
}
 

mihe7

Top Contributor
@Alex2013 Danke für die Info.

Was das Erweitern betrifft: der Code ist nicht wirklich gut, weil er sich nicht erweitern lässt. Erweitern heißt in diesem Zusammenhang, Funktionalität mit minimalen Änderungen hinzufügen zu können, d. h. möglichst "ohne" bestehende Klassen ändern zu müssen, sondern indem neue Klassen hinzugefügt bzw. bestehende Methoden aufgerufen werden. Dazu müsste man einiges ändern.
 

Alex2013

Bekanntes Mitglied
Ein letztes Anliegen habe ich noch:

Das war der ursprünglich von mir erstellte Code. Mit einer ComboBox. Die Zeichnen Klasse ist aber fast exakt so.
Ich habe ein paar Varianten in der Zeichnen klasse getestet, das Zeichnen reagiert aber ausschließlich, nachdem der annehmen button gedrückt wurde.
habe ich etwas total übersehen oder liegt es in diesem fall tatsächlich nur an der Combobox?
@mihe7 und @MoxxiManagarm

der Code:
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;

public class Hauptfenster extends JFrame
{
    private static final long serialVersionUID = 1L;
   
    String []objekte={"Kreuz","Rechteck","Oval","Arc","ROA zeichnen","Alle zeichnen","Punkt 1","Punkt 2","Linie","Unendlich","Schanze","Acht",""};
    JComboBox objektAuswahl=new JComboBox(objekte);
    JButton annehmen=new JButton("annehmen"),loeschen=new JButton("loeschen");
    JRadioButton fuellen=new JRadioButton("füllen");
    JRadioButton kreuz=new JRadioButton("Kreuz anzeigen");
    Random rd=new Random();
   
    JPanel layout=new JPanel();
    JPanel steuerungRadioButton=new JPanel();
    JPanel radioBUnsichtbar=new JPanel();
    Zeichen zeichnen=new Zeichen();
   
    public Hauptfenster()
    {
        setSize(1200, 800);
        setLayout(new BorderLayout());
        add(layout, BorderLayout.NORTH);
        add(zeichnen,BorderLayout.CENTER);
        layout.setLayout(new GridLayout(1, 4));
        layout.add(objektAuswahl,BorderLayout.NORTH);
        layout.add(annehmen,BorderLayout.NORTH);
        layout.add(loeschen,BorderLayout.NORTH);
        layout.add(fuellen, BorderLayout.NORTH);
        layout.add(kreuz,BorderLayout.NORTH);
        objektAuswahl.setSize(getWidth()/2,50);
        annehmen.setSize(getWidth()/2,50);
        annehmen.addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {
                zeichnen.setFuellstatus(fuellen.isSelected());
                zeichnen.setKreuzwahl(kreuz.isSelected());
                zeichnen.setAuswahl(objektAuswahl.getSelectedIndex());
                zeichnen.repaint();   
            }
        });
       
        loeschen.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                zeichnen.setAuswahl(12);
                //Auskommentierung von repaint bringt keine veränderung
                zeichnen.repaint();
            }
        });
        objektAuswahl.setSelectedIndex(12);
        setLocationRelativeTo(null);
        setVisible(true);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

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



Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;

import javax.swing.JPanel;

class Zeichen extends JPanel
{
    private static final long serialVersionUID = 1L;
    int auswahl;
    boolean stat=true;
    boolean kreuz=false;

    public Zeichen()
    {
        auswahl=0;
        //wenn der status drin ist und auf false steht oder mit true initialisiert wird
        //funktioniert dieses Programm nicht mehr wie es soll
        //oder wenn die paint Methode geändert wird
        stat=true;
        //Auskommentierung von setVisible bringt keine Veränderung sofern sonst alles
        //so bleibt
        setVisible(true);
    }
   
    public void setFuellstatus(boolean f)
    {
        stat=f;
        repaint();
    }
   
    public void setKreuzwahl(boolean k)
    {
        kreuz=k;
    }
   
    public void setAuswahl(int a)
    {
        auswahl=a;
        repaint();
    }
   
    public void paint(Graphics g) {
        //TODO Auto-generated method stub
        //wenn diese Zeilen auskommentiert werden fängt die Grafikanzeige an zu spinnen
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, getWidth(), getHeight());
        g.setColor(Color.BLACK);
//       
       
        switch(auswahl)
        {
            case 0:
                //x Linie
                g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                //y Linie
                g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                break;
            case 1:
                //füllung nicht gewählt
                if((!kreuz)&&(!stat))
                {
                    g.drawRect(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//*2 50, 150, 150);
                }
                //füllung gewählt
                if((!kreuz)&&(stat))
                {
                    g.fillRect(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
                }
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.drawRect(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
                   
                }
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.fillRect(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
               
                }
                break;
            case 2:
                if((!kreuz)&&(stat))
                {
                    g.fillOval(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
                }
                if((!kreuz)&&(!stat))
                    g.drawOval(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.fillOval(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
                }
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.drawOval(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3));//(50, 50, 150, 150);
                }
                break;
            case 3:
                if((!kreuz)&&(stat))
                {
                    g.fillArc(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3), 100, 100);
                }
                if((!kreuz)&&(!stat))
                    g.drawArc(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3), 100, 100);
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.drawArc(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3), 100, 100);
                }
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.fillArc(getWidth()/3,getHeight()/3,(getWidth()/3)*1,(getHeight()/3), 100, 100);
                }
                break;
                //alle zusammen zeichnen
            case 4:
                if((!kreuz)&&(stat))
                {
                    g.fillRect(50,50,100,100);
                    g.fillOval(50,350,100,100);
                    g.fillArc((getWidth()/3)*2,50, 100, 100, 250, 250);
                }
                if((!kreuz)&&(!stat))
                {
                    g.drawRect(50,50,100,100);
                    g.drawOval(50,350,100,100);
                    g.drawArc((getWidth()/3)*2,50, 100, 100, 250, 250);
                }
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.drawRect(50,50,100,100);
                    g.drawOval(50,350,100,100);
                    g.drawArc((getWidth()/3)*2,50, 100, 100, 250, 250);
                }
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.fillRect(50,50,100,100);
                    g.fillOval(50,350,100,100);
                    g.fillArc((getWidth()/3)*2,50, 100, 100, 250, 250);
                }
                break;
            case 5:
                if((!kreuz)&&(stat))
                {
                    g.fillRect(5, 5, 155, 205);
                    g.fillArc(100, 100, 250, 250, 20, 20);
                    g.fillOval(270, 270, 50, 50);
                    g.fill3DRect(350, 350, 150, 100, true);
                    g.fillPolygon(new Polygon());
                }
                if((!kreuz)&&(!stat))
                {
                    g.drawRect(5,5, 155, 205);
                    g.drawArc(100, 100, 250, 250, 20, 20);
                    g.drawOval(270, 270, 50, 50);
                    g.draw3DRect(350, 350, 150, 100, true);
                    g.drawPolygon(new Polygon());
                }
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.fillRect(5, 5, 155, 205);
                    g.fillArc(100, 100, 250, 250, 20, 20);
                    g.fillOval(270, 270, 50, 50);
                    g.fill3DRect(350, 350, 150, 100, true);
                    g.fillPolygon(new Polygon());
                }
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.drawRect(5,5, 155, 205);
                    g.drawArc(100, 100, 250, 250, 20, 20);
                    g.drawOval(270, 270, 50, 50);
                    g.draw3DRect(350, 350, 150, 100, true);
                    g.drawPolygon(new Polygon());
                }
                break;
            case 6:
                if((kreuz)&&(!stat)){
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.drawOval(getWidth()/2, getHeight()/2-10, 10, 10);
                }
                if((!kreuz)&&(!stat)){
                    g.drawOval(getWidth()/2, getHeight()/2-10, 10, 10);
                }
                if((kreuz)&&(stat)){
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.fillOval(getWidth()/2, getHeight()/2-10, 10, 10);
                }
                if((!kreuz)&&(stat)){
                    g.fillOval(getWidth()/2, getHeight()/2-10, 10, 10);
                }
                break;
            case 7:
                if((kreuz)&&(!stat)){
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.drawOval(getWidth()/2, getHeight()/2-10, 10, 10);
                    g.drawOval((getWidth()/3)*2,(getHeight()/3)-((getHeight()/3)/3),10,10);
                }
                if((!kreuz)&&(!stat)){
                    g.drawOval(getWidth()/2, getHeight()/2-10, 10, 10);
                    g.drawOval((getWidth()/3)*2,(getHeight()/3)-((getHeight()/3)/3),10,10);
                }
                if((kreuz)&&(stat)){
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                    g.fillOval(getWidth()/2, getHeight()/2-10, 10, 10);
                    g.fillOval((getWidth()/3)*2,(getHeight()/3)-((getHeight()/3)/3),10,10);
                }
                if((!kreuz)&&(stat)){
                    g.fillOval(getWidth()/2, getHeight()/2-10, 10, 10);
                    g.fillOval((getWidth()/3)*2,(getHeight()/3)-((getHeight()/3)/3),10,10);
                }
                break;
            case 8:
               
                int x1=getWidth()/2;int y1=getHeight()/2;
                int x2=(getWidth()/3)*2;int y2=(getHeight()/3)-((getHeight()/3)/3);
               
                if(!kreuz){
                    g.drawLine(x1,y1,x2,y2);
                    g.drawLine(x1, y1, getWidth()/2+5, getHeight()/2+5);
                    g.drawLine(x2, y2, x2+5, y2+5);
                    g.drawLine(x2+5, y2+5, x1+5, y1+5);
                }
                if(kreuz){
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.drawLine(x1,y1,x2,y2);
                    g.drawLine(x1, y1, getWidth()/2+5, getHeight()/2+5);
                    g.drawLine(x2, y2, x2+5, y2+5);
                    g.drawLine(x2+5, y2+5, x1+5, y1+5);
                }
                break;
            case 9:
                if((!kreuz)&&(!stat))
                {
                    g.drawOval(getWidth()-(getWidth()),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                    g.drawOval(getWidth()-((getWidth()/2)),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                }
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());

                    g.drawOval(getWidth()-(getWidth()),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                    g.drawOval(getWidth()-((getWidth()/2)),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                }
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.fillOval(getWidth()-(getWidth()),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                    g.fillOval(getWidth()-((getWidth()/2)),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                }
                if((!kreuz)&&(stat))
                {
                    g.fillOval(getWidth()-(getWidth()),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                    g.fillOval(getWidth()-((getWidth()/2)),getHeight()-((getHeight()/4)*3),getWidth()/2,getHeight()/2);
                }
                break;
            case 10:
                //Wenn schanze gewählt , radio button ausgrauen!
                g.drawLine(10, 10, 50, 100);
                g.drawLine(50, 100, 80, 110);
                g.drawLine(80, 110, 80, 120);
                g.drawLine(80, 120, 120, 140);
                g.drawLine(120, 140, 180, 180);
                g.drawLine(180, 180, 600, 600);
                break;
            case 11:
                if((!kreuz)&&(!stat))
                {
                    g.drawOval(getWidth()-((getWidth()/4)*3),getHeight()-getHeight(),getWidth()/2,getHeight()/2);
                    g.drawOval(getWidth()-((getWidth()/4)*3),getHeight()-(getHeight()/2),getWidth()/2,getHeight()/2);
                }
                if((!kreuz)&&(stat))
                {

                    g.fillOval(getWidth()-((getWidth()/4)*3),getHeight()-getHeight(),getWidth()/2,getHeight()/2);
                    g.fillOval(getWidth()-((getWidth()/4)*3),getHeight()-(getHeight()/2),getWidth()/2,getHeight()/2);
                }
                if((kreuz)&&(!stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
                   
                    g.drawOval(getWidth()-((getWidth()/4)*3),getHeight()-getHeight(),getWidth()/2,getHeight()/2);
                    g.drawOval(getWidth()-((getWidth()/4)*3),getHeight()-(getHeight()/2),getWidth()/2,getHeight()/2);
           
                }
                if((kreuz)&&(stat))
                {
                    //x Linie
                    g.drawLine(getWidth()-getWidth(), getHeight()/2, getWidth(), getHeight()/2);
                    //y Linie
                    g.drawLine(getWidth()/2, getHeight()-getHeight(), getWidth()/2, getHeight());
           
                    g.fillOval(getWidth()-((getWidth()/4)*3),getHeight()-getHeight(),getWidth()/2,getHeight()/2);
                    g.fillOval(getWidth()-((getWidth()/4)*3),getHeight()-(getHeight()/2),getWidth()/2,getHeight()/2);
                }
                break;
            case 12:
                g.setColor(Color.WHITE);
                g.fillRect(0, 0, getWidth(), getHeight());
                break;
                default:
                    auswahl=12;
        }
    }
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Zeichen werden im JFormattedTextField überschrieben AWT, Swing, JavaFX & SWT 3
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
_user_q Gibt es eine Möglichkeit, in Java alle möglichen Zeichen automatisch tippen zu lassen? AWT, Swing, JavaFX & SWT 13
Kohl Jedes Objekt einer JTable um ein Zeichen verkürzen AWT, Swing, JavaFX & SWT 7
F AWT awt KeyEvent - Zeichen direkt nach Eingabe löschen AWT, Swing, JavaFX & SWT 2
L Swing Tastatur zeichen AWT, Swing, JavaFX & SWT 4
I JOptionPane maximale Zeichen einstellen AWT, Swing, JavaFX & SWT 2
L JavaFX ASCII Zeichen /char von KeyEvent erhalten AWT, Swing, JavaFX & SWT 5
C Zeichen eines 6 -Eckes AWT, Swing, JavaFX & SWT 1
S Zeichen ohne paint-Methode AWT, Swing, JavaFX & SWT 2
C JavaFX Tiefgestellte Zeichen in fxml AWT, Swing, JavaFX & SWT 2
B EventHandler für durch Tastenkombination erzeugte Zeichen AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
A Zeichen-Steuerelement in Swing AWT, Swing, JavaFX & SWT 0
kaoZ Swing Aktives Zeichen für Spieleprogrammierung ? AWT, Swing, JavaFX & SWT 8
D Swing Manuellen Kreis zeichen AWT, Swing, JavaFX & SWT 22
U Label zeigt nicht überall HTML Zeichen AWT, Swing, JavaFX & SWT 3
R einzelne Zeichen in jTable einlesen AWT, Swing, JavaFX & SWT 10
S SWT [TextBox] Bestimmtes Zeichen entfernen unterbinden AWT, Swing, JavaFX & SWT 3
P readLine solange es mit einem bestimmten Zeichen anfängt AWT, Swing, JavaFX & SWT 5
P Komische Zeichen beim Abspeichern von TextFelder AWT, Swing, JavaFX & SWT 2
Jats Zeichen auf mehrere JPanels AWT, Swing, JavaFX & SWT 7
P 2D-Grafik versch. Rectangles aus array von textfelder zeichen AWT, Swing, JavaFX & SWT 6
DEvent Swing JTextField Anzahl an sichtbaren Zeichen AWT, Swing, JavaFX & SWT 4
D JLabel und JPanel -> Neu zeichen?! oO AWT, Swing, JavaFX & SWT 2
E jTextFiled max 160 Zeichen? AWT, Swing, JavaFX & SWT 4
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
A Rechteck zeichen AWT, Swing, JavaFX & SWT 4
Q AWT Choice ein Zeichen hinzufügen AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Textbasiertes 2D Spiel, jedes Zeichen manipulierbar AWT, Swing, JavaFX & SWT 7
R 2D-Grafik auf JPanel zeichen - ohne @Override paintComponent AWT, Swing, JavaFX & SWT 6
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
T Zeichen/char in Bild umwandeln und darstellen AWT, Swing, JavaFX & SWT 10
2 Bücher über Zeichen und Baumalgorithmen AWT, Swing, JavaFX & SWT 5
T Zeichen zählen JTextPane AWT, Swing, JavaFX & SWT 4
F Zeichen per Menuitem funktioniert nicht AWT, Swing, JavaFX & SWT 2
V Nur zulässige Zeichen in JTable-Zellen eintragen können AWT, Swing, JavaFX & SWT 2
P Swing Probleme beim Zeichen AWT, Swing, JavaFX & SWT 6
aze JTextfield nur so breit dass alle zeichen sichtbar sind AWT, Swing, JavaFX & SWT 2
3TageBart Ebenen in Zeichen-Programm implementieren AWT, Swing, JavaFX & SWT 9
P Zeichen abhängig davon, ob sich eine Variable geändert hat AWT, Swing, JavaFX & SWT 2
G Blinkenden Punkt zeichen AWT, Swing, JavaFX & SWT 2
G Viele Fehler beim zeichen AWT, Swing, JavaFX & SWT 5
J JTextPane mit genau 80 Zeichen breite definieren? AWT, Swing, JavaFX & SWT 3
J jTextarea Anzahl Zeichen in einer Zeile begrenzen AWT, Swing, JavaFX & SWT 2
Lazybone CMYK Zeichen AWT, Swing, JavaFX & SWT 12
H Polyline zeichen, aber wie? AWT, Swing, JavaFX & SWT 2
D jTable ausdrucken => € zeichen wird nicht richtig angezei AWT, Swing, JavaFX & SWT 7
H Problem beim zeichen eines TimeSeriesChart mit jfreechart AWT, Swing, JavaFX & SWT 5
K UNICODE ZEICHEN in den SWing-GUIs AWT, Swing, JavaFX & SWT 4
B Dreiecke zeichen AWT, Swing, JavaFX & SWT 3
D Zeichen ein Pixel mit Java2D AWT, Swing, JavaFX & SWT 15
C JFormattedTextField - nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 3
F Zeichen von Linien, Rechtecken, zb wie in paint AWT, Swing, JavaFX & SWT 2
C PI-Zeichen im JLabel AWT, Swing, JavaFX & SWT 3
G Zeilenumbruch nach n Zeichen in JTextArea AWT, Swing, JavaFX & SWT 24
U kleiner-Zeichen JEditorPanel (war: JOptionPane) AWT, Swing, JavaFX & SWT 5
T JLayerdPane: wie etwas über eine AWT Komponente zeichen? AWT, Swing, JavaFX & SWT 2
N Tastatur Zeichen einlesen ohne sichtbares Fenster AWT, Swing, JavaFX & SWT 8
D JTextPane: "Nichtdruckbare Zeichen" anzeigen & AWT, Swing, JavaFX & SWT 4
R letztes Zeichen aus textfeld auslesen AWT, Swing, JavaFX & SWT 2
M rendern von zeichen AWT, Swing, JavaFX & SWT 4
R Zeichen-Markierungrahmen AWT, Swing, JavaFX & SWT 5
F Eingabe in JPasswordField auf vier Zeichen beschränken AWT, Swing, JavaFX & SWT 3
M Transparentes gif als extra Klasse auf einen JFrame zeichen AWT, Swing, JavaFX & SWT 17
B ComboBox: nur bestimmte Zeichen zulassen AWT, Swing, JavaFX & SWT 5
G Linien in ein Koordinatensystem zeichen AWT, Swing, JavaFX & SWT 7
H funktionen in ein koordinatensystem zeichen AWT, Swing, JavaFX & SWT 5
B Erstes Zeichen in einem String toUpperCase ??? AWT, Swing, JavaFX & SWT 4
bummerland ein zeichen nach einem zeilenumbruch einfügen AWT, Swing, JavaFX & SWT 4
M Vokabelprogram - Schleife für Liste soll schrittweise durchlaufen werden AWT, Swing, JavaFX & SWT 3
melaniemueller JavaFX Beispiel kann nicht ausgeführt werden AWT, Swing, JavaFX & SWT 4
B Mit ContentPane werden Komponenten angezeigt, mit SplitPane, JPanel nicht? AWT, Swing, JavaFX & SWT 6
J Swing Werte des JTable werden nicht angezeigt AWT, Swing, JavaFX & SWT 9
W Können Animationen in JavaFX "verschluckt" werden? AWT, Swing, JavaFX & SWT 8
M Umwandlung in den HSV-Farbraum lässt die Grafik pixelig werden AWT, Swing, JavaFX & SWT 8
H JButtons werden nicht angezeigt AWT, Swing, JavaFX & SWT 5
Lunar Swing JFrame erstellt; weitere Elemente werden nicht eingefügt/sind nicht zu sehen AWT, Swing, JavaFX & SWT 4
B JavaFX Von welcher Klasse und zu welchem Zeitpunkt werden Event-Objekte erstellt? AWT, Swing, JavaFX & SWT 3
ProggersWorld JavaFX Icons im TreeView werden nicht angezeigt AWT, Swing, JavaFX & SWT 1
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
Zrebna Problem bei Eventhandling (Value soll nach jedem erneutem Klick gelöscht werden) AWT, Swing, JavaFX & SWT 4
J e(fx)clipse funkioniert nicht / imports werden Rot gekennzeichnet AWT, Swing, JavaFX & SWT 1
ronbot77 JavaFX Rechtecke werden nicht neu gezeichnet AWT, Swing, JavaFX & SWT 8
R FXML File kann nicht hinzugefügt werden! AWT, Swing, JavaFX & SWT 2
L Komponenten eines Panels werden erst nach Klick darauf angezeigt AWT, Swing, JavaFX & SWT 13
H String teilen, damit bei JLabel keine Punkte am Ende angezeigt werden AWT, Swing, JavaFX & SWT 4
E Komponenten von JScrollPane werden nicht richtig ermittelt AWT, Swing, JavaFX & SWT 2
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
L Bilder werden in exportierter Datei nicht geladen AWT, Swing, JavaFX & SWT 6
J Bilder aus dem SceneBuilder werden in der Jar nicht dargestellt AWT, Swing, JavaFX & SWT 4
TheWhiteShadow JavaFX Bilder werden ungewollt Skaliert AWT, Swing, JavaFX & SWT 1
MoxxiManagarm JavaFX Auch ich versuche mit JavaFX warm zu werden AWT, Swing, JavaFX & SWT 9
L Swing JPanels werden nicht angezeigt! AWT, Swing, JavaFX & SWT 7
ralfb1105 Swing SwingWorker - max 10 Threats werden gestartet !? AWT, Swing, JavaFX & SWT 5
S Fehler: Hauptklasse neon.Main konnte nicht gefunden oder geladen werden AWT, Swing, JavaFX & SWT 5
A Swing Meine JButtons werden nicht angezeigt bitte helft mir AWT, Swing, JavaFX & SWT 2
J JavaFX Elemente werden nicht zu TableView hinzugefügt AWT, Swing, JavaFX & SWT 3
SchmidiMC 2D-Grafik Grafiken werden nicht gezeichnet AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben