Zeichenmethode wird nicht überschrieben.

heino

Mitglied
Hallo,
seit einigen Stunden arbeite ich nun schon an diesem Problem und ich finde einfach nicht heraus was fehlt bzw. falsch ist. Eigentlich hatte alles gut funktioniert, aber nachdem ich etwas geändert hatte bleibt das Panel einfach die ganze Zeit grau. Dummerweise kann ich auch nicht genau sagen, welche Änderung das verursacht hat.

Was passieren soll:
Nach dem Programmstart sollte im JFrame eigentlich alles weiß sein. Nachdem man das MenuItem im Menü Datei drückt und im JDialog der erscheint "Ok" drückt, sollte nochmal was anders gezeichnet werden.

Allerdings sieht man zumindest im JFrame die ganze Zeit nur das "Standardgrau".

Hier wäre mein Code:
Java:
public class PianoSchedule {  
   
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MainFrm mainFrm=new MainFrm(); 
            }
        });
    }
    
}

Java:
public class MainFrm extends javax.swing.JFrame {
    
    public static int mx=0;
    public static int my=0;
    
    public static String state="Programmstart";
    
    public static String werksname;
    public static String komponist;
    public static String stilrichtung;
    
   
    private PaintBox paintBox;    
    
    private final Projektstartfenster projektstartfenster; 

    /**
     * Creates new form mainFrm
     */
    public MainFrm() {
        this.paintBox = new PaintBox();
        projektstartfenster = new Projektstartfenster(this ,paintBox ,true);
        
        
//        paintBox.addMouseMotionListener(new MouseMotionListener() {
//
//            @Override
//            public void mouseDragged(MouseEvent e) {
//                
//            }
//
//            @Override
//            public void mouseMoved(MouseEvent e) {
//                mx=e.getX();
//                my=e.getY();
//                paintBox.repaint();
//            }
//        });
        add(paintBox, BorderLayout.CENTER);
        setVisible(true);
        initComponents();       
        
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
    }// </editor-fold>                        

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        projektstartfenster.setVisible(true);
    }                                          

    /**
     * @param args the command line arguments
     */

    // Variables declaration - do not modify                     
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    // End of variables declaration                   
}

Java:
public class Projektstartfenster extends javax.swing.JDialog {

        PaintBox paintBox ;
    /**
     * Creates new form Projektstartfenster
     * @param parent
     * @param paintBox
     * @param modal
     */
    public Projektstartfenster(java.awt.Frame parent,PaintBox paintBox, boolean modal) {
        super(parent, modal);
        this.paintBox=paintBox;
        initComponents();
        pack();
        setLocationRelativeTo(parent);
    }
    

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        
        PaintBox.werksname=feldWerksname.getText();
        PaintBox.komponist=feldKomponist.getText();
        PaintBox.stilrichtung=feldStilrichtung.getText();
        
        MainFrm.state="Neues Projekt";
        paintBox.repaint();
                
        Projektstartfenster.this.setVisible(false);        
    }                                   
 

    /**
     * @param args the command line arguments
     */

    // Variables declaration - do not modify                     
    private javax.swing.JTextField feldKomponist;
    private javax.swing.JTextField feldStilrichtung;
    private javax.swing.JTextField feldWerksname;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}

Java:
 public class PaintBox extends JPanel{
    
    public static String werksname;
    public static String komponist;
    public static String stilrichtung;     
        
        @Override
        protected void paintComponent(Graphics g) {   
            
            int mx=MainFrm.mx;
            int my=MainFrm.my;           
            
            int l=Math.round((this.getWidth())/2);
            int h=Math.round((this.getHeight()-24)/2);
            int mix=Math.round((this.getWidth())/2);           
            
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D)g;
            
            g2d.setColor(Color.white);
            g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
            
            g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            
            
            if ("Neues Projekt".equals(MainFrm.state)) {
                g2d.setColor(Color.white);
                g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
                
                if ((mx<=l) && (my<=h)) {
                    g2d.setColor(Color.decode("#595959"));
                } else {
                    g2d.setColor(Color.decode("#404040"));
                }
                g2d.fillRect(0, 0, l, h);
                
                if ((mx>=l) && (my<=h)) {
                    g2d.setColor(Color.decode("#7bd5f1"));
                } else {
                    g2d.setColor(Color.decode("#6dbdd6"));
                }
                g2d.fillRect(mix, 0, l, h);
                
                if ((mx<=l) && (my>=h)) {
                    g2d.setColor(Color.decode("#d2172d"));
                } else {
                    g2d.setColor(Color.decode("#B71427"));
                }
                g2d.fillRect(0, h, l, h);
                
                if ((mx>=l) && (my>=h)) {
                    g2d.setColor(Color.decode("#FFE658"));
                } else {
                    g2d.setColor(Color.decode("#e6cf4f"));
                }
                g2d.fillRect(mix, h, l, h);
                
                g2d.setColor(Color.decode("#f0f0f0"));
                g2d.fillRect(0, 2*h, 2*l, 24);
                
                g2d.setColor(Color.white);
                g2d.setFont(new Font("default", Font.PLAIN, 30));
                g2d.drawString("Dekodieren", 40, Math.round(h/2)+10);
                g2d.drawString("Automatisieren", l+40, Math.round(h/2)+10);
                g2d.drawString("Balancieren", 40, h+Math.round(h/2)+10);
                g2d.drawString("Kolorieren", l+40, h+Math.round(h/2)+10);
                
                
                g2d.setColor(Color.gray);
                g2d.setFont(new Font("default", Font.PLAIN, 13));
                g2d.drawString("Name des Werks: " + werksname + "    " + "Komponist: " + komponist + "    " + "Stilrichtung: " + stilrichtung, 5, 2*h+17);         
            }
        }

    }
 
Zuletzt bearbeitet:

turtle

Top Contributor
Nun,da deine paint-Routine testet,
Java:
		if ("Neues Projekt".equals(MainFrm.state)) {
ist die Initialisierung FALSCH

Java:
	// public static String state = "Programmstart";
	public static String state = "Neues Projekt";
 

heino

Mitglied
Das kann es eigentlich nicht sein, da zumindest
Java:
g2d.setColor(Color.white);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
immer ausgeführt werden müsste und das passiert nicht. Ich glaube, die ganze Routine wird aus irgendeinem Grund nicht benutzt.
 
Zuletzt bearbeitet:

turtle

Top Contributor
Ich nehme ALLE Anfragen immer sehr ernst und probiere den Code auch aus, BEVOR ich dazu was schreibe.

Das könntest du selber verifizieren, indem du einen Breakpoint bei paintComponent setzt und merkst was in der Routine gemacht wird.

Also siehst du am Screenshot, das es genau das Problem ist, was ich geschildert habe, weil ich es debugged habe.

Zur Prüfung mal das Programm, was ich geteste habe.
Java:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;

import javax.swing.JPanel;

public class MainFrm extends javax.swing.JFrame {
	public static void main(String[] args) {
		MainFrm mainFrm = new MainFrm();
	}

	public static int mx = 0;
	public static int my = 0;

	// public static String state = "Programmstart";
	public static String state = "Neues Projekt";

	public static String werksname;
	public static String komponist;
	public static String stilrichtung;

	private PaintBox paintBox;

	private final Projektstartfenster projektstartfenster;

	/**
	 * Creates new form mainFrm
	 */
	public MainFrm() {
		System.out.println(state);
		this.paintBox = new PaintBox();
		projektstartfenster = new Projektstartfenster(this, paintBox, true);

		// paintBox.addMouseMotionListener(new MouseMotionListener() {
		//
		// @Override
		// public void mouseDragged(MouseEvent e) {
		//
		// }
		//
		// @Override
		// public void mouseMoved(MouseEvent e) {
		// mx=e.getX();
		// my=e.getY();
		// paintBox.repaint();
		// }
		// });
		add(paintBox, BorderLayout.CENTER);
		setVisible(true);
		initComponents();

	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always
	 * regenerated by the Form Editor.
	 */
	@SuppressWarnings("unchecked")
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {
	}// </editor-fold>

	private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
		projektstartfenster.setVisible(true);
	}

	/**
	 * @param args
	 *            the command line arguments
	 */

	// Variables declaration - do not modify
	private javax.swing.JMenu jMenu1;
	private javax.swing.JMenu jMenu2;
	private javax.swing.JMenuBar jMenuBar1;
	private javax.swing.JMenuItem jMenuItem1;
	// End of variables declaration
}

class Projektstartfenster extends javax.swing.JDialog {

	PaintBox paintBox;

	/**
	 * Creates new form Projektstartfenster
	 * 
	 * @param parent
	 * @param paintBox
	 * @param modal
	 */
	public Projektstartfenster(java.awt.Frame parent, PaintBox paintBox, boolean modal) {
		super(parent, modal);
		this.paintBox = paintBox;
		initComponents();
		pack();
		setLocationRelativeTo(parent);
	}

	/**
	 * This method is called from within the constructor to initialize the form.
	 * WARNING: Do NOT modify this code. The content of this method is always
	 * regenerated by the Form Editor.
	 */
	@SuppressWarnings("unchecked")
	// <editor-fold defaultstate="collapsed" desc="Generated Code">
	private void initComponents() {
	}// </editor-fold>

	private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
		// TODO add your handling code here:

		PaintBox.werksname = feldWerksname.getText();
		PaintBox.komponist = feldKomponist.getText();
		PaintBox.stilrichtung = feldStilrichtung.getText();

		MainFrm.state = "Neues Projekt";
		paintBox.repaint();

		Projektstartfenster.this.setVisible(false);
	}

	/**
	 * @param args
	 *            the command line arguments
	 */

	// Variables declaration - do not modify
	private javax.swing.JTextField feldKomponist;
	private javax.swing.JTextField feldStilrichtung;
	private javax.swing.JTextField feldWerksname;
	private javax.swing.JButton jButton1;
	private javax.swing.JLabel jLabel1;
	private javax.swing.JLabel jLabel2;
	private javax.swing.JLabel jLabel3;
	private javax.swing.JPanel jPanel1;
	// End of variables declaration
}

class PaintBox extends JPanel {

	public static String werksname;
	public static String komponist;
	public static String stilrichtung;

	@Override
	protected void paintComponent(Graphics g) {

		int mx = MainFrm.mx;
		int my = MainFrm.my;

		int l = Math.round((this.getWidth()) / 2);
		int h = Math.round((this.getHeight() - 24) / 2);
		int mix = Math.round((this.getWidth()) / 2);

		super.paintComponent(g);
		Graphics2D g2d = (Graphics2D) g;

		g2d.setColor(Color.white);
		g2d.fillRect(0, 0, this.getWidth(), this.getHeight());

		g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);

		if ("Neues Projekt".equals(MainFrm.state)) {
			g2d.setColor(Color.white);
			g2d.fillRect(0, 0, this.getWidth(), this.getHeight());

			if ((mx <= l) && (my <= h)) {
				g2d.setColor(Color.decode("#595959"));
			} else {
				g2d.setColor(Color.decode("#404040"));
			}
			g2d.fillRect(0, 0, l, h);

			if ((mx >= l) && (my <= h)) {
				g2d.setColor(Color.decode("#7bd5f1"));
			} else {
				g2d.setColor(Color.decode("#6dbdd6"));
			}
			g2d.fillRect(mix, 0, l, h);

			if ((mx <= l) && (my >= h)) {
				g2d.setColor(Color.decode("#d2172d"));
			} else {
				g2d.setColor(Color.decode("#B71427"));
			}
			g2d.fillRect(0, h, l, h);

			if ((mx >= l) && (my >= h)) {
				g2d.setColor(Color.decode("#FFE658"));
			} else {
				g2d.setColor(Color.decode("#e6cf4f"));
			}
			g2d.fillRect(mix, h, l, h);

			g2d.setColor(Color.decode("#f0f0f0"));
			g2d.fillRect(0, 2 * h, 2 * l, 24);

			g2d.setColor(Color.white);
			g2d.setFont(new Font("default", Font.PLAIN, 30));
			g2d.drawString("Dekodieren", 40, Math.round(h / 2) + 10);
			g2d.drawString("Automatisieren", l + 40, Math.round(h / 2) + 10);
			g2d.drawString("Balancieren", 40, h + Math.round(h / 2) + 10);
			g2d.drawString("Kolorieren", l + 40, h + Math.round(h / 2) + 10);

			g2d.setColor(Color.gray);
			g2d.setFont(new Font("default", Font.PLAIN, 13));
			g2d.drawString("Name des Werks: " + werksname + "    " + "Komponist: " + komponist + "    "
					+ "Stilrichtung: " + stilrichtung, 5, 2 * h + 17);
		}
	}

}
 

Anhänge

  • mainfrm.PNG
    mainfrm.PNG
    30,9 KB · Aufrufe: 19
Zuletzt bearbeitet:

heino

Mitglied
Es tut mir leid, wenn ich dich verärgert hatte, jedoch habe ich selbst auch getestet, was bei der von dir vorgeschlagenen Änderung passiert.
Eine Breakpoint hatte ich ebenfalls schon gesetzt. Deshalb bin ich auch erst auf die Idee gekommen das paintComponent nicht genutzt wird.
Ich glaube das Hauptproblem dieses Missverständnisses liegt darin, dass ich den von NetBeans automatisch generierten Code zu großen Teilen weggelassen habe, weshalb dein Programm von meinem abweicht.
Darum poste ich am Ende nochmal den gesamten Code.

Die vier bunten Rechtecke dürfen eigentlich erst nach dem JDialog erscheinen, welches du durch das MenuItem "Neues Projekt" sichtbar machst. Vorher sollte nur ein alles füllendes weißes Rechteck zu sehen sein (darum auch die Bedingung)

Java:
public class PianoSchedule {  
   
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                MainFrm mainFrm=new MainFrm(); 
            }
        });
    }
    
}

Java:
public class MainFrm extends javax.swing.JFrame {
    
    public static int mx=0;
    public static int my=0;
    
    public static String state="Neues Programm";
    
    public static String werksname;
    public static String komponist;
    public static String stilrichtung;
    
   
    private PaintBox paintBox;    
    
    private final Projektstartfenster projektstartfenster; 

    /**
     * Creates new form mainFrm
     */
    public MainFrm() {
        this.paintBox = new PaintBox();
        projektstartfenster = new Projektstartfenster(this ,paintBox ,true);
        
        
//        paintBox.addMouseMotionListener(new MouseMotionListener() {
//
//            @Override
//            public void mouseDragged(MouseEvent e) {
//                
//            }
//
//            @Override
//            public void mouseMoved(MouseEvent e) {
//                mx=e.getX();
//                my=e.getY();
//                paintBox.repaint();
//            }
//        });
        add(paintBox, BorderLayout.CENTER);
        setVisible(true);
        initComponents();       
        
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();
        jMenu2 = new javax.swing.JMenu();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("PiCon");

        jMenu1.setText("Datei");

        jMenuItem1.setText("Neues Projekt");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jMenuItem1ActionPerformed(evt);
            }
        });
        jMenu1.add(jMenuItem1);

        jMenuBar1.add(jMenu1);

        jMenu2.setText("Bearbeiten");
        jMenuBar1.add(jMenu2);

        setJMenuBar(jMenuBar1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 781, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 488, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

    private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        projektstartfenster.setVisible(true);
    }                                          

    /**
     * @param args the command line arguments
     */

    // Variables declaration - do not modify                     
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenu jMenu2;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuItem jMenuItem1;
    // End of variables declaration                   
}

Java:
public class Projektstartfenster extends javax.swing.JDialog {

        PaintBox paintBox ;
    /**
     * Creates new form Projektstartfenster
     * @param parent
     * @param paintBox
     * @param modal
     */
    public Projektstartfenster(java.awt.Frame parent,PaintBox paintBox, boolean modal) {
        super(parent, modal);
        this.paintBox=paintBox;
        initComponents();
        pack();
        setLocationRelativeTo(parent);
    }
    

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        feldWerksname = new javax.swing.JTextField();
        feldKomponist = new javax.swing.JTextField();
        feldStilrichtung = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Neues Projekt - Startfenster");

        jLabel1.setText("Name des Werks:");

        feldWerksname.setName("hallo"); // NOI18N
        feldWerksname.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                feldWerksnameActionPerformed(evt);
            }
        });

        jButton1.setText("Ok");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jLabel2.setText("Komponist:");

        jLabel3.setText("Stilrichtung:");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGap(0, 250, Short.MAX_VALUE)
                        .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 99, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1)
                            .addComponent(jLabel2)
                            .addComponent(jLabel3))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(feldWerksname)
                            .addComponent(feldKomponist)
                            .addComponent(feldStilrichtung))))
                .addContainerGap())
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(27, 27, 27)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(feldWerksname, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel1))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(feldKomponist, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel2))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(feldStilrichtung, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3))
                .addGap(18, 18, 18)
                .addComponent(jButton1)
                .addContainerGap(30, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        
        PaintBox.werksname=feldWerksname.getText();
        PaintBox.komponist=feldKomponist.getText();
        PaintBox.stilrichtung=feldStilrichtung.getText();
        
        MainFrm.state="Neues Projekt";
        paintBox.repaint();
                
        Projektstartfenster.this.setVisible(false);        
    }                                                                                

    /**
     * @param args the command line arguments
     */

    // Variables declaration - do not modify                     
    private javax.swing.JTextField feldKomponist;
    private javax.swing.JTextField feldStilrichtung;
    private javax.swing.JTextField feldWerksname;
    private javax.swing.JButton jButton1;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    // End of variables declaration                   
}

Java:
 public class PaintBox extends JPanel{
    
    public static String werksname;
    public static String komponist;
    public static String stilrichtung;     
        
        @Override
        protected void paintComponent(Graphics g) {   
            
            int mx=MainFrm.mx;
            int my=MainFrm.my;           
            
            int l=Math.round((this.getWidth())/2);
            int h=Math.round((this.getHeight()-24)/2);
            int mix=Math.round((this.getWidth())/2);           
            
            super.paintComponent(g);
            Graphics2D g2d = (Graphics2D)g;
            
            g2d.setColor(Color.white);
            g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
            
            g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            
            
            if ("Neues Projekt".equals(MainFrm.state)) {
                g2d.setColor(Color.white);
                g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
                
                if ((mx<=l) && (my<=h)) {
                    g2d.setColor(Color.decode("#595959"));
                } else {
                    g2d.setColor(Color.decode("#404040"));
                }
                g2d.fillRect(0, 0, l, h);
                
                if ((mx>=l) && (my<=h)) {
                    g2d.setColor(Color.decode("#7bd5f1"));
                } else {
                    g2d.setColor(Color.decode("#6dbdd6"));
                }
                g2d.fillRect(mix, 0, l, h);
                
                if ((mx<=l) && (my>=h)) {
                    g2d.setColor(Color.decode("#d2172d"));
                } else {
                    g2d.setColor(Color.decode("#B71427"));
                }
                g2d.fillRect(0, h, l, h);
                
                if ((mx>=l) && (my>=h)) {
                    g2d.setColor(Color.decode("#FFE658"));
                } else {
                    g2d.setColor(Color.decode("#e6cf4f"));
                }
                g2d.fillRect(mix, h, l, h);
                
                g2d.setColor(Color.decode("#f0f0f0"));
                g2d.fillRect(0, 2*h, 2*l, 24);
                
                g2d.setColor(Color.white);
                g2d.setFont(new Font("default", Font.PLAIN, 30));
                g2d.drawString("Dekodieren", 40, Math.round(h/2)+10);
                g2d.drawString("Automatisieren", l+40, Math.round(h/2)+10);
                g2d.drawString("Balancieren", 40, h+Math.round(h/2)+10);
                g2d.drawString("Kolorieren", l+40, h+Math.round(h/2)+10);
                
                
                g2d.setColor(Color.gray);
                g2d.setFont(new Font("default", Font.PLAIN, 13));
                g2d.drawString("Name des Werks: " + werksname + "    " + "Komponist: " + komponist + "    " + "Stilrichtung: " + stilrichtung, 5, 2*h+17);         
            }
        }

    }
 
Zuletzt bearbeitet:

turtle

Top Contributor
Nein, verärgert bin ich nicht, da braucht es schon schwerere geschütze:)

ich konnte dein Problem nach vollziehen und habe Kommentare abzugeben.

Ist das echt Code den NetBeans erstellt? Überall diese voll qualifizierten Klassennamen? Haben die denn noch nie was von import gehört?

Ich nehme IMMER den jGoodies FormLayout Manager, wird in Eclipse vom WindowBuilder unterstützt, und kenne mich mit GroupLayout nicht aus. Aber in initComponents von MainFrm habe ich den Übeltäter auskommentiert und schon läuft alles.

Java:
		setJMenuBar(jMenuBar1);

		// GroupLayout layout = new GroupLayout(getContentPane());
		// getContentPane().setLayout(layout);
		// layout.setHorizontalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,
		// 781,
		// Short.MAX_VALUE));
		// layout.setVerticalGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGap(0,
		// 488,
		// Short.MAX_VALUE));
		add(paintBox);
 

Anhänge

  • mainfrm.PNG
    mainfrm.PNG
    33 KB · Aufrufe: 22
Zuletzt bearbeitet:

heino

Mitglied
Das wird jetzt schon sehr banal, aber ich bin einfach nicht in der Lage den Codeabschnitt auszukommentieren oder zu löschen, weil er von NetBeans erstellt wurde :D.
Kann mir jemand sagen wie ich das wegbekomme oder trotz des Abschnitts zeichnen kann???
 

turtle

Top Contributor
Ich kenne mich mit NetBeans nicht aus.

Aber ich meine mich zu erinnern, das es mit gewissen Kommentaren funktioniert.

Daher entferne mal die Zeile
Java:
// <editor-fold defaultstate="collapsed" desc="Generated Code">

Und natürlich genügt es folgende Zeile rauszuwerfen
Java:
		getContentPane().setLayout(layout);
 
Zuletzt bearbeitet:

heino

Mitglied
Ich kenne mich mit NetBeans nicht aus.

Aber ich meine mich zu erinnern, das es mit gewissen Kommentaren funktioniert.

Daher entferne mal die Zeile
Java:
// <editor-fold defaultstate="collapsed" desc="Generated Code">

Das ist leider auch geschützt -.-*.

Wieso hat das Zeichnen vorher funktioniert??
 

turtle

Top Contributor
ich hatte schon meine Gründe NICHT mit NetBeans zu arbeiten:bae:

Wie verhält sich NB eigentlich, wenn du mit einem stink-normalen Editor (beispielsweise Notepad) die Zeilen manuell änderst?

Wieso hat das Zeichnen vorher funktioniert??
Im ersten Post sehe ich diese Zeilen nicht in initComponents

GEFUNDEN!

Du musst die .form datei löschen, die NB angelegt hat. Dann kannst du editieren.
 
Zuletzt bearbeitet:

heino

Mitglied
Ich habe mir jetzt mal angeschaut, was für einen Code NetBeans generiert, wenn ich ein JPanel hinzufügt und das auf paintBox übertragen (ohne jetzt wirklich zu verstehen, wie das wirklich funktioniert).

Java:
javax.swing.GroupLayout paintBoxLayout = new javax.swing.GroupLayout(paintBox);
        paintBox.setLayout(paintBoxLayout);
        paintBoxLayout.setHorizontalGroup(
            paintBoxLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, this.getWidth(), Short.MAX_VALUE)
        );
        paintBoxLayout.setVerticalGroup(
            paintBoxLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, this.getHeight(), Short.MAX_VALUE)
        );
        
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()                
                .addComponent(paintBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                )
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()                
                .addComponent(paintBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
pack();

Das funktioniert zwar noch nicht ganz so wie erwünscht, aber wenigstens wird jetzt gezeichnet.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX Background-Bild wird in .exe nicht angezeigt AWT, Swing, JavaFX & SWT 6
B im JFrame gesetzte Hintergrundfarbe wird beim Ausführen nicht gezeigt AWT, Swing, JavaFX & SWT 2
P Methode wird nicht überprüft AWT, Swing, JavaFX & SWT 4
P paintComponent-Methode wird dauernd neu aufgerufen AWT, Swing, JavaFX & SWT 2
G JavaFX LineChart Datenpunkte Markierung wird abgeschnitten AWT, Swing, JavaFX & SWT 1
P JTextField wird nur sehr klein angezeigt und verändert die Größe nicht AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
N €-Zeichen wird nicht akzeptiert AWT, Swing, JavaFX & SWT 4
G Problem mit der Anzeige von jLabel. Unlesbar wenn der Text geändert wird. AWT, Swing, JavaFX & SWT 28
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
G Objekt.setSelected(false), wenn es nicht mehr fokussiert wird AWT, Swing, JavaFX & SWT 2
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
U Warum wird zweimal die Affinetransformation estellt (2Dgraphics, Java)? AWT, Swing, JavaFX & SWT 31
DonBronson Gezeichnetes Objekt verschwindet nachdem erneut gezeichnet wird AWT, Swing, JavaFX & SWT 8
ProggersWorld JavaFX TextArea BackgroundImage wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Bild wird nicht geladen obwohl sie gefunden wird AWT, Swing, JavaFX & SWT 0
M Nach Export als Runnable Jar wird css nicht merh gefunden AWT, Swing, JavaFX & SWT 22
izoards Outlook Mail erstellen - Signatur wird nicht angezeigt. AWT, Swing, JavaFX & SWT 3
J actionperformed wird nicht aufgerufen/ repaint() AWT, Swing, JavaFX & SWT 6
J Swing Komponente wird unpassend angepasst in der Größe AWT, Swing, JavaFX & SWT 35
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
S Next_Button wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 6
FrittenFritze Ein Problem mit der CSSBox, die Größe wird nicht angepasst AWT, Swing, JavaFX & SWT 5
CptK windowClosed() nur aufrufen, wenn Fenster nicht über Button geschlossen wird AWT, Swing, JavaFX & SWT 1
J Komponente wird manchmal falsch gezeichnet AWT, Swing, JavaFX & SWT 0
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
JojoSand Java Programm wird nicht gestartet - keinen Fehlerhinweis AWT, Swing, JavaFX & SWT 9
R Text vom Jlabel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JavaFX Bearbeitetes Bild wird nicht gespeichert AWT, Swing, JavaFX & SWT 9
J setOnCloseRequest wird nicht ausgelöst AWT, Swing, JavaFX & SWT 3
P JavaFX Fenster wird nicht angezeigt (Mac) AWT, Swing, JavaFX & SWT 13
B JavaFX Bei Scenen-Wechsel im primaryStage wird aktuelle Fenstergröße nicht mit übernommen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
M JavaFX javaFX Label-Text wird nicht gesetzt AWT, Swing, JavaFX & SWT 3
O Swing "Eigenes" JPanel wird dem JScrollPane nicht hinzugefügt AWT, Swing, JavaFX & SWT 5
L Swing JLabel wird beim ändern der Schriftart immer neu gezeichnet. AWT, Swing, JavaFX & SWT 2
R Layout Manager null und Component wird nicht hinzugefügt AWT, Swing, JavaFX & SWT 3
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
kodela BufferStrategy wird nicht gefunden AWT, Swing, JavaFX & SWT 5
J JPanel wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
S ImageView wird dem Gridpane nicht zugefügt AWT, Swing, JavaFX & SWT 1
G Repaint wird nicht durchgeführt AWT, Swing, JavaFX & SWT 8
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
Bluedaishi TableView mit Combox wert wird nicht in die TableView gesetzt AWT, Swing, JavaFX & SWT 38
L JFrame wird zu klein erstellt AWT, Swing, JavaFX & SWT 7
G JavaFX Nach Zoomen wird an falscher Stelle gezeichnet AWT, Swing, JavaFX & SWT 0
kodela Swing Letzte Änderung in der Tabelle wird nicht gespeichert AWT, Swing, JavaFX & SWT 5
cool_brivk24 AWT BufferedImage wird nicht geladen AWT, Swing, JavaFX & SWT 17
S JavaFX Wird es überhaupt genutzt? AWT, Swing, JavaFX & SWT 3
FRI3ND GUI wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Canvas wird nicht angezeigt AWT, Swing, JavaFX & SWT 10
K Swing JScrollPane wird nicht angezeigt wenn man Components darstellt. AWT, Swing, JavaFX & SWT 2
ralfb1105 Swing Wert in JTextField wird falsch ausgegeben AWT, Swing, JavaFX & SWT 2
B JavaFX Text wird nicht angezeigt, kein Fehler AWT, Swing, JavaFX & SWT 2
J Aus welchen Grund wird der Button nicht angezeigt im GridPane? AWT, Swing, JavaFX & SWT 1
J MouseListener wird nicht ausgeführt. AWT, Swing, JavaFX & SWT 4
E Swing Liste in Scrollpane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
J Controller wird zu groß, was tun ? AWT, Swing, JavaFX & SWT 5
CptK Wieso wird nur ein Teil meiner Buttons angezeigt? AWT, Swing, JavaFX & SWT 1
T Label wird nicht angezeigt AWT, Swing, JavaFX & SWT 4
M Aktion ausführen wenn ein JRadiobutton deselektiert wird. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel "ContentPane" wird nicht gesetzt/angezeigt AWT, Swing, JavaFX & SWT 16
I JavaFX Fenster wird auf einem anderen Rechner anders dargestellt AWT, Swing, JavaFX & SWT 5
zhermann FX Label text wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 12
zhermann TableView wird nicht gefüllt AWT, Swing, JavaFX & SWT 14
it_is_all Warum wird die JTable im JDialog nicht angezeigt? AWT, Swing, JavaFX & SWT 1
zhermann JavaFX Main App wird nicht geöffnet AWT, Swing, JavaFX & SWT 6
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
4 Swing JLabel wird ,,abgehackt" AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing Größe des JPanel ändern/wird nicht geändert. AWT, Swing, JavaFX & SWT 3
DaCrazyJavaExpert Swing JPanel wird in JScollPane nicht angezeigt AWT, Swing, JavaFX & SWT 2
D JFrame wird nicht richtig angezeigt AWT, Swing, JavaFX & SWT 1
P Kein Bild wird angezeigt bei ImageIcon AWT, Swing, JavaFX & SWT 16
MaxG. JavaFX Inhalt in Tableview wird nicht angezeigt AWT, Swing, JavaFX & SWT 11
T JButton wird beim vergrößern des Fensters erst sichtbar AWT, Swing, JavaFX & SWT 4
A Swing Tabelle wird bei Betätigung des Button nicht befüllt AWT, Swing, JavaFX & SWT 17
krgewb 2D-Grafik paint-Methode wird zu oft ausgeführt AWT, Swing, JavaFX & SWT 5
G Nur ein JPanel wird angezeigt AWT, Swing, JavaFX & SWT 9
M Swing Inhalt meines JTables wird falsch dargestellt AWT, Swing, JavaFX & SWT 8
T Default Table wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
H Musik wird nach dem erstellen der .jar Datei nicht mehr abgespielt AWT, Swing, JavaFX & SWT 1
K JavaFX Stage wird nicht angezeigt AWT, Swing, JavaFX & SWT 9
B JTable wird nicht angezeigt AWT, Swing, JavaFX & SWT 1
A Swing Bild wird nicht mehr geladen AWT, Swing, JavaFX & SWT 4
U Swing Inhalt vom Fenster wird erst durch Hovern oder Klicken sichtbar AWT, Swing, JavaFX & SWT 3
D iText PDF wird nach Neustart nicht importiert AWT, Swing, JavaFX & SWT 0
Thallius Wer oder was bestimmt welches Frame toFront kommt wenn ein anderes geschlossen wird? AWT, Swing, JavaFX & SWT 8
X JavaFX AreaChart area höhe wird nicht richtig dargestellt AWT, Swing, JavaFX & SWT 2
Z Swing Frame wird geöffnet, aber ist ohne Inhalt AWT, Swing, JavaFX & SWT 0
N JLabel ändern während Programm ausgeführt wird AWT, Swing, JavaFX & SWT 4
S Swing Konstruktor wird nicht rechtzeitig fertig? AWT, Swing, JavaFX & SWT 4
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
J 2D-Grafik Linie wird nach Mausklick nicht am richtigen Ort gezeichnet AWT, Swing, JavaFX & SWT 11
C Liste - ListView wird nicht angezeigt AWT, Swing, JavaFX & SWT 15
N JavaFX TextArea Updaten bevor Prozess gestartet wird AWT, Swing, JavaFX & SWT 7

Ähnliche Java Themen

Neue Themen


Oben