Kishan Bheemajiyani
Kishan Bheemajiyani

Reputation: 3439

Graphics are Caused When i am trying to Change Jpanel In Jframe

public class ExamplePane extends javax.swing.JFrame {

    public ExamplePane() {
        // this is constructor 
        initComponents();

    }
    private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {                                     
        jPanel1.setVisible(true);
        jPanel2.setVisible(false);
        jPanel2.invalidate();
    }                                    

    private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {                                     
        jPanel2.setVisible(true);
        jPanel1.setVisible(false);
        jPanel1.invalidate();
    }                                    

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
            java.awt.EventQueue.invokeLater(new Runnable() {
                public void run() {
                    new ExamplePane().setVisible(true);
                }
            });
        }
        // Variables declaration - do not modify                     
        private javax.swing.JLabel jLabel1;
        private javax.swing.JLabel jLabel2;
        private javax.swing.JPanel jPanel1;
        private javax.swing.JPanel jPanel2;
        private javax.swing.JPanel jPanel3;
        private javax.swing.JPanel jPanel4;
        // End of variables declaration                   
    }

when u trying to display one by one jpanel on the click event then panels are overlapping in that. so please help me for this.

Upvotes: 0

Views: 62

Answers (2)

subash
subash

Reputation: 3140

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.BevelBorder;

public class ScrollLabel extends javax.swing.JFrame {

    public  ScrollLabel() {

        setSize(400, 400);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLayout(null);
        jPanel1 = new JPanel();
        jPanel1.setBackground(Color.red);
        jPanel1.add(new JLabel("Panel 1"));

        jPanel2 = new JPanel();
        jPanel2.setBackground(Color.green);
        jPanel2.add(new JLabel("Panel 2"));

        jLabel1 = new JLabel("jPanel 1");
        jLabel2 = new JLabel("jPanel 2");

        jPanel1.setBounds(0, 0, getWidth(),getHeight()-50));
        jPanel2.setBounds(0, 0, getWidth(),getHeight()-50));
        jLabel1.setBounds(0, getHeight()-40, 100,30);
        jLabel2.setBounds(getWidth()/2, getHeight()-40, 100,30);

        jLabel1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
        jLabel2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));


        add(jPanel1);
        add(jPanel2);
        add(jLabel1);
        add(jLabel2);

        repaint();

        jLabel1.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                jLabel1MouseClicked(e);
            }

            @Override
            public void mousePressed(MouseEvent e) {
            }

            @Override
            public void mouseReleased(MouseEvent e) {
            }

            @Override
            public void mouseEntered(MouseEvent e) {
            }

            @Override
            public void mouseExited(MouseEvent e) {
            }
        });


        jLabel2.addMouseListener(new MouseListener() {
            @Override
            public void mouseClicked(MouseEvent e) {
                jLabel2MouseClicked(e);
            }

            @Override
            public void mousePressed(MouseEvent e) {
            }

            @Override
            public void mouseReleased(MouseEvent e) {
            }

            @Override
            public void mouseEntered(MouseEvent e) {
            }

            @Override
            public void mouseExited(MouseEvent e) {
            }
        });

    }

    private void jLabel1MouseClicked(java.awt.event.MouseEvent evt) {
        jPanel1.setVisible(true);
        jPanel2.setVisible(false);
        jPanel2.invalidate();
    }

    private void jLabel2MouseClicked(java.awt.event.MouseEvent evt) {
        jPanel2.setVisible(true);
        jPanel1.setVisible(false);
        jPanel1.invalidate();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {

        new ScrollLabel().setVisible(true);

    }
    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JPanel jPanel4;
    // End of variables declaration                   
}

Upvotes: 0

mKorbel
mKorbel

Reputation: 109813

  1. you have to use CardLayout, there are only two JPanels, override only mouseClicked() (from MouseEvents) in MouseAdapter

  2. you doing changes to already visible Swing GUI, is required to notify used LayoutManager that there are changes, use (re)validate() and repaint() instead of invalidate();, then playing with setVisible isn't required too

Upvotes: 2

Related Questions