Reputation: 3439
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
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
Reputation: 109813
you have to use CardLayout
, there are only two JPanel
s, override only mouseClicked()
(from MouseEvents) in MouseAdapter
you doing changes to already visible Swing GUI, is required to notify used LayoutManage
r that there are changes, use (re)validate()
and repaint()
instead of invalidate();
, then playing with setVisible
isn't required too
Upvotes: 2