/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package swingdemo ;
import java.awt.BorderLayout ;
import java.awt.CardLayout ;
import java.awt.Color ;
import java.awt.Container ;
import java.awt.HeadlessException ;
import java.awt.event.ActionEvent ;
import java.awt.event.ActionListener ;
import javax.swing.JButton ;
import javax.swing.JCheckBox ;
import javax.swing.JFrame ;
import javax.swing.JPanel ;
/**
*
* @author MYPC
*/
public class CardLayoutDemo
extends JFrame {
public CardLayoutDemo
( String title
) throws HeadlessException
{ super ( title) ;
this .setSize ( 400 ,600 ) ;
this .
setDefaultCloseOperation ( JFrame .
EXIT_ON_CLOSE ) ; this .setVisible ( true ) ;
this .setLocationRelativeTo ( null ) ;
CreatAndShow( ) ;
}
public void CreatAndShow( ) throws HeadlessException {
// Tạo Panel cha
//Tạo một panel phía bắc
jpnNorth.add ( jbt1) ;
jpnNorth.add ( jbt2) ;
//Tạo panel ở trung tâm
jpnCenter.
setBackground ( Color .
LIGHT_GRAY ) ;
//Tạo một panel bên trong panel trung tâm
card1.
setBackground ( Color .
LIGHT_GRAY ) ; card1.
add ( new JButton ( "I'm Card1" ) ) ;
//Tạo panel bên trong panel trung tâm
//panel này bị panel Card1 chồng lên
card2.
setBackground ( Color .
PINK ) ; card2.
add ( new JButton ( "I'm Card2" ) ) ;
//Thêm 2 panel này vào panel trung tâm
jpnCenter.add ( card1,"my card1" ) ;
jpnCenter.add ( card2,"my card2" ) ;
con.add ( jpnBorder) ;
@Override
c1.show ( jpnCenter,"my card1" ) ;
}
} ) ;
@Override
c2.show ( jpnCenter,"my card2" ) ;
}
} ) ;
}
public static void main
( String [ ] args
) { new CardLayoutDemo( "MY WINDOW" ) ;
}
}
LyoKICogVG8gY2hhbmdlIHRoaXMgbGljZW5zZSBoZWFkZXIsIGNob29zZSBMaWNlbnNlIEhlYWRlcnMgaW4gUHJvamVjdCBQcm9wZXJ0aWVzLgogKiBUbyBjaGFuZ2UgdGhpcyB0ZW1wbGF0ZSBmaWxlLCBjaG9vc2UgVG9vbHMgfCBUZW1wbGF0ZXMKICogYW5kIG9wZW4gdGhlIHRlbXBsYXRlIGluIHRoZSBlZGl0b3IuCiAqLwpwYWNrYWdlIHN3aW5nZGVtbzsKCmltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7CmltcG9ydCBqYXZhLmF3dC5DYXJkTGF5b3V0OwppbXBvcnQgamF2YS5hd3QuQ29sb3I7CmltcG9ydCBqYXZhLmF3dC5Db250YWluZXI7CmltcG9ydCBqYXZhLmF3dC5IZWFkbGVzc0V4Y2VwdGlvbjsKaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OwppbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CmltcG9ydCBqYXZheC5zd2luZy5KQnV0dG9uOwppbXBvcnQgamF2YXguc3dpbmcuSkNoZWNrQm94OwppbXBvcnQgamF2YXguc3dpbmcuSkZyYW1lOwppbXBvcnQgamF2YXguc3dpbmcuSlBhbmVsOwoKLyoqCiAqCiAqIEBhdXRob3IgTVlQQwogKi8KcHVibGljIGNsYXNzIENhcmRMYXlvdXREZW1vIGV4dGVuZHMgSkZyYW1lewoKICAgIHB1YmxpYyBDYXJkTGF5b3V0RGVtbyhTdHJpbmcgdGl0bGUpIHRocm93cyBIZWFkbGVzc0V4Y2VwdGlvbiB7CiAgICAgICAgc3VwZXIodGl0bGUpOwogICAgICAgIHRoaXMuc2V0U2l6ZSg0MDAsNjAwKTsKICAgICAgICB0aGlzLnNldERlZmF1bHRDbG9zZU9wZXJhdGlvbihKRnJhbWUuRVhJVF9PTl9DTE9TRSk7CiAgICAgICAgdGhpcy5zZXRWaXNpYmxlKHRydWUpOwogICAgICAgIHRoaXMuc2V0TG9jYXRpb25SZWxhdGl2ZVRvKG51bGwpOwogICAgICAgIENyZWF0QW5kU2hvdygpOwogICAgICAgIAogICAgfQoKICAgIAogICAgCiAgICAKICAgIHB1YmxpYyB2b2lkICBDcmVhdEFuZFNob3coKSB0aHJvd3MgSGVhZGxlc3NFeGNlcHRpb24gewogICAgICAgIAogICAgICAgIC8vIFThuqFvIFBhbmVsIGNoYQogICAgICAgIEpQYW5lbCBqcG5Cb3JkZXIgPSBuZXcgSlBhbmVsKCk7CiAgICAgICAganBuQm9yZGVyLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOwogICAgICAgIAogICAgICAgIAogICAgICAgIC8vVOG6oW8gbeG7mXQgcGFuZWwgcGjDrWEgYuG6r2MKICAgICAgICBKUGFuZWwganBuTm9ydGggPSBuZXcgSlBhbmVsKCk7CiAgICAgICAgSkJ1dHRvbiBqYnQxID0gbmV3IEpCdXR0b24oIlNob3cgQ2FyZDEiKTsKICAgICAgICBKQnV0dG9uIGpidDIgPSBuZXcgSkJ1dHRvbigiU2hvdyBDYXJkMiIpOwogICAgICAgIGpwbk5vcnRoLmFkZChqYnQxKTsKICAgICAgICBqcG5Ob3J0aC5hZGQoamJ0Mik7CiAgICAgICAganBuQm9yZGVyLmFkZChqcG5Ob3J0aCwgQm9yZGVyTGF5b3V0Lk5PUlRIKTsKICAgICAgICAKICAgICAgICAKICAgICAgICAvL1ThuqFvIHBhbmVsIOG7nyB0cnVuZyB0w6JtCiAgICAgICAgZmluYWwgSlBhbmVsIGpwbkNlbnRlciA9IG5ldyBKUGFuZWwoKTsKICAgICAgICBqcG5DZW50ZXIuc2V0TGF5b3V0KG5ldyBDYXJkTGF5b3V0KCkpOwogICAgICAgIGpwbkNlbnRlci5zZXRCYWNrZ3JvdW5kKENvbG9yLkxJR0hUX0dSQVkpOwogICAgICAgICAKICAgICAgICAvL1ThuqFvIG3hu5l0IHBhbmVsIGLDqm4gdHJvbmcgcGFuZWwgdHJ1bmcgdMOibQogICAgICAgIGZpbmFsICBKUGFuZWwgY2FyZDEgPSBuZXcgSlBhbmVsKCk7CiAgICAgICAgY2FyZDEuc2V0QmFja2dyb3VuZChDb2xvci5MSUdIVF9HUkFZKTsKICAgICAgICBjYXJkMS5hZGQobmV3IEpCdXR0b24oIkhlbGxvIikpOwogICAgICAgIGNhcmQxLmFkZChuZXcgSkJ1dHRvbigiSSdtIENhcmQxIikpOwogICAgICAgIAogICAgICAgIAogICAgICAgIC8vVOG6oW8gcGFuZWwgYsOqbiB0cm9uZyBwYW5lbCB0cnVuZyB0w6JtIAogICAgICAgIC8vcGFuZWwgbsOgeSBi4buLIHBhbmVsIENhcmQxIGNo4buTbmcgbMOqbgogICAgICAgIGZpbmFsICBKUGFuZWwgY2FyZDIgPSBuZXcgSlBhbmVsKCk7CiAgICAgICAgY2FyZDIuc2V0QmFja2dyb3VuZChDb2xvci5QSU5LKTsKICAgICAgICBjYXJkMi5hZGQobmV3IEpCdXR0b24oIkhpICEiKSk7CiAgICAgICAgY2FyZDIuYWRkKG5ldyBKQ2hlY2tCb3goIkNhcmRMYXlvdXQiKSk7CiAgICAgICAgY2FyZDIuYWRkKG5ldyBKQnV0dG9uKCJJJ20gQ2FyZDIiKSk7CiAgICAgICAgCiAgICAgICAgLy9UaMOqbSAyIHBhbmVsIG7DoHkgdsOgbyBwYW5lbCB0cnVuZyB0w6JtCiAgICAgICAganBuQ2VudGVyLmFkZChjYXJkMSwibXkgY2FyZDEiKTsKICAgICAgICBqcG5DZW50ZXIuYWRkKGNhcmQyLCJteSBjYXJkMiIpOwogICAgICAgIAogICAgICAgIGpwbkJvcmRlci5hZGQoanBuQ2VudGVyLEJvcmRlckxheW91dC5DRU5URVIpOyAKICAgICAgICAKICAgICAgICAKICAgICAgICBDb250YWluZXIgY29uID0gZ2V0Q29udGVudFBhbmUoKTsKICAgICAgICBjb24uYWRkKGpwbkJvcmRlcik7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgamJ0MS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgewogICAgICAgICAgICAgIENhcmRMYXlvdXQgYzEgPSAoQ2FyZExheW91dCkganBuQ2VudGVyLmdldExheW91dCgpOwogICAgICAgICAgICAKICAgICAgICAgICAgYzEuc2hvdyhqcG5DZW50ZXIsIm15IGNhcmQxIik7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgamJ0Mi5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CiAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgewogICAgICAgICAgICBDYXJkTGF5b3V0IGMyID0gKENhcmRMYXlvdXQpIGpwbkNlbnRlci5nZXRMYXlvdXQoKTsKICAgICAgICAgICAgIGMyLnNob3coanBuQ2VudGVyLCJteSBjYXJkMiIpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgICAgIAogICAgICB9CiAgICAKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBuZXcgQ2FyZExheW91dERlbW8oIk1ZIFdJTkRPVyIpOwogICAgfQogICAgCiAgICAKfQo=