-
210824_Swing+Label+Button+Arrays+RandomSwing 2021. 8. 24. 17:38
public class SwingLabelGridEx05 extends JFrame {
Container cp;
JLabel[] lbl=new JLabel[9]; //공간만 할당받고 초기값 받은 거 아님
String []str={"한국","영국","프랑스","오스트리아","체코","헝가리","홍콩","미국","태국"};
JButton btn;
public SwingLabelGridEx05(String title) {
super(title);
cp=this.getContentPane();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(700,100,600,600);
cp.setBackground(new Color(151,190,200));
initDesign();
this.setVisible(true);
}
public void initDesign() {
//패널을 프레임의 센터에 추가
JPanel pCenter=new JPanel(new GridLayout(3, 3)); //패널 생성하고 그리드 3행3열
this.add(pCenter,BorderLayout.CENTER);
//라벨을 패널에 추가
for(int i=0;i<lbl.length;i++)
{
lbl[i]=new JLabel(str[i], JLabel.CENTER);
//색상 랜덤으로 주기
int r=(int)(Math.random()*256); //0~256
int g=(int)(Math.random()*256); //0~256
int b=(int)(Math.random()*256); //0~256
lbl[i].setBackground(new Color(r, g, b));
//글꼴
lbl[i].setFont(new Font("궁서체",Font.BOLD,15));
lbl[i].setOpaque(true);
//패널에 라벨 추가
pCenter.add(lbl[i]);
}
//프레임의 하단에 버튼 생성 후 추가
btn=new JButton("라벨색상변경");
this.add(btn,BorderLayout.SOUTH); //this는 프레임을 의미
//버튼에 익명내부 클래스 이벤트
//객체가 하나일 때는 익명내부클래스가 편함
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for(int i=0;i<lbl.length;i++)
{
int r=(int)(Math.random()*256); //0~256
int g=(int)(Math.random()*256); //0~256
int b=(int)(Math.random()*256); //0~256
lbl[i].setBackground(new Color(r, g, b));
}
}
});
}
public static void main(String[] args) {
new SwingLabelGridEx05("라벨 배열 그래드로 출력");
}
}
'Swing' 카테고리의 다른 글
210826_JLabel+JTable+JTextArea (0) 2021.08.26 210826_JTable+JLabel+JButton+DefaultTableModel (0) 2021.08.26 210824_Swing+label+Icon+Date (0) 2021.08.24 210824_Swing+Checkbox+ActionListener+ItemListener (0) 2021.08.24 210824_Swing+radiobutton+arrays+actionlistener (0) 2021.08.24