Swing JButton - onclick -> Grafikfehler

Kandum

Mitglied
Guten Abend Leute,

in der Schule programmieren wir derzeit eine Bank. Hierzu möchte ich eine anschauliche GUI entwickeln. Dies funktioniert auch soweit, allerdings habe ich ein Problem mit einem Grafikfehler.

Ich benötige keine Lösung des Problems, vielmehr bin ich an der Ursache interessiert so das ich das Problem lösen kann. Das erste Bild zeigt die GUI wie sie aussieht, wenn man diese just gestartet hat, das zweite Bild zeigt diese sobald man auf einen der 2 großen Buttons gedrückt hat.

Ich freue mich über jede/n Idee/Hinweise 🙂





Quellcode:
Java:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package itabank;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import javax.swing.plaf.ColorUIResource;

/**
 *
 * @author
 */
public class ITABank extends JPanel {
    // Declare Variables, Arrays, Objects
    //--> Variabels
    private int i_ScreenHeight = 600;
    private int i_ScreenWidth = 900;
    private int i_HeaderHeight = 40;
    private int i_HeaderWidth = i_ScreenWidth;
    
    private JLabel lbl_Header;
    private JButton btn_Transaktion;
    private JButton btn_Konto;
    //--> Arrays
    //--> Objects
    private static JFrame jP_Frame = new JFrame("Desktop");
    private final JPanel jP_Konto = new JPanel( null );
    private final JPanel jP_Transaktion = new JPanel( null );
    
    public ITABank() {
        // JFrame
        setBackground( Color.WHITE );
        setBorder( BorderFactory.createLineBorder(Color.BLACK) );
        setPreferredSize (new Dimension (i_ScreenWidth, i_ScreenHeight));
        setLayout(null);
        
        // Header
        lbl_Header = new JLabel("<html><h3 style='color: #ffffff; '>ITABank</h3></html>");
        lbl_Header.setSize(57, i_HeaderHeight);
        lbl_Header.setLocation( i_HeaderWidth/2-lbl_Header.getWidth(), 0);
        add(lbl_Header);
        
        // Menu
        btn_Transaktion = new JButton("Transaktion tätigen");
        btn_Transaktion.setSize(( i_HeaderWidth-24) / 2, 50);
        btn_Transaktion.setLocation(6, i_HeaderHeight+6);
        add(btn_Transaktion);
        add(lbl_Header);
        
        btn_Konto = new JButton("Ihr Konto");
        btn_Konto.setSize(( i_HeaderWidth-24) / 2, 50);
        btn_Konto.setLocation(btn_Transaktion.getWidth()+18, i_HeaderHeight+6);
        add(btn_Konto);
        
        // JPanels
        jP_Transaktion.setSize( i_ScreenWidth-12, i_ScreenHeight-(i_HeaderHeight*4) );
        jP_Transaktion.setLocation(6, i_HeaderHeight*3);
        jP_Transaktion.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.RAISED) );
        add(jP_Transaktion);
        JButton test = new JButton("Transaktionen");
        test.setBounds(20, 20, 200, 20);
        jP_Transaktion.add( test );
        
        jP_Konto.setSize( i_ScreenWidth-12, i_ScreenHeight-(i_HeaderHeight*4) );
        jP_Konto.setLocation(6, i_HeaderHeight*3);
        jP_Konto.setBorder( BorderFactory.createEtchedBorder(EtchedBorder.RAISED) );
        
        add(jP_Konto);
        JButton test2 = new JButton("Konto");
        test2.setBounds(20, 20, 200, 20);
        jP_Konto.add( test2 );
        
        // ActionListener
        btn_Transaktion.addActionListener( new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jP_Konto.setVisible(false);
                jP_Transaktion.setVisible(true);
            }
            
        } );
        
        btn_Konto.addActionListener( new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                jP_Konto.setVisible(true);
                jP_Transaktion.setVisible(false);
            }
            
        } );
    
    } // constructor
    
    @Override
    public void paintComponent( Graphics g) {;
        Graphics2D g2d = (Graphics2D) g.create();
        Color myColor = new Color(93, 198, 0);
        Color myColor2 = new Color(82, 130, 0);
        
        GradientPaint gp_Header = new GradientPaint(getWidth()/2, 0, myColor, getWidth()/2, i_HeaderHeight, myColor2);
        g2d.setPaint(gp_Header);
        g2d.fillRect(0, 0, i_HeaderWidth, i_HeaderHeight);
        
        
    } // + void paintComponent
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        jP_Frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE);
        jP_Frame.getContentPane().add (new  ITABank());
        jP_Frame.setUndecorated(true);
        jP_Frame.pack();
        jP_Frame.setResizable(false);
        jP_Frame.setLocationRelativeTo(null);
        jP_Frame.setVisible(true);
        
    } // + static void main

} // + class ITABank extends JPanel
 
Oh, danke - lag an
Code:
super.paintComponent(g);
🙂

Problem solved & "Using Layout Managers" werde ich studieren 🙂
 

Zurück
Oben