JFrame
자바 GUI의 최상위 윈도우는 JFrame이다.
사용할 수 있는 속성은 간단하게 아래와 같다.
public static void main(String[] args) {
JFrame frame = new JFrame(); //creates a frame
frame.setSize(420,420);
frame.setTitle("JFrame title goes here");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //EXIT OUT
frame.setResizable(false); //prevent frame from being resized
frame.getContentPane().setBackground(new Color(0x123456)); //change color of background
// frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); //do not close
// ImageIcon image = new ImageIcon("logo.png"); //create an ImageIcon
// frame.setIconImage(image.getImage()); //change icon of frame
frame.setVisible(true); //make frame visible
}
보통 클래스를 만들고 JFrame을 상속받아서 사용한다. (JFrame 확장의 개념)
public class MyFrame extends JFrame{
MyFrame() {
this.setSize(420,420);
this.setTitle("JFrame title goes here");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //EXIT OUT
this.setResizable(false); //prevent frame from being resized
this.getContentPane().setBackground(new Color(0x123456)); //change color of background
this.setVisible(true);
}
JLabel
JLabel는 글자나 이미지를 쓸 수 있는 컴포넌트이다.
객체를 생성하고 프레임에 붙여서(부품을 붙이듯이 부모 객체에 컴포넌트로 등록한다) 사용할 수 있다.
add() 키워드로 부모 객체에게 등록한다.
public class Label {
public static void main(String[] args) {
//JLabel = a GUI display area for a string of text, an image, or both
JLabel label = new JLabel("Bro, do you even code?"); //set text of label
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
frame.add(label); //set component
}
}
JLabel이 제공하는 여러가지 메소드를 사용해보자
public static void main(String[] args) {
//JLabel = a GUI display area for a string of text, an image, or both
JLabel label = new JLabel();
ImageIcon pinksea = new ImageIcon("pinksea.png");
label.setIcon(pinksea);
label.setText("Bro, do you even code?");
label.setHorizontalTextPosition(JLabel.CENTER); //set text LEFT, CENTER, RIGHT of ImageIcon
// label.setVerticalTextPosition(JLabel.TOP); //set text TOP, CENTER, BOTTOM of ImageIcon
label.setForeground(Color.pink); //set font color of text
label.setFont(new Font("MV Boli",Font.PLAIN, 20)); //set font of text
label.setIconTextGap(-25); //set gap of text to image
label.setBackground(Color.black);
label.setOpaque(true); //display background color
Border border = BorderFactory.createLineBorder(Color.pink, 10); //border
label.setBorder(border);
label.setHorizontalAlignment(JLabel.CENTER);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
frame.add(label); //set component
}
JPanel
JPanel은 다른 컴포넌트들을 집어넣을 수 있는 컨테이너 같은 역할을 한다.
최상위 프레임인 JFrame 위에 그림을 그릴 수 있는 도화지를 한장 깐다고 생각하면 된다.
JPanel은 여러개를 생성할 수 있다.
public static void main(String[] args) {
//JPanel = a GUI component that functions as a container to hold other components
JPanel redPanel = new JPanel();
redPanel.setBackground(Color.red);
redPanel.setBounds(0, 0, 250, 250);
JPanel bluePanel = new JPanel();
bluePanel.setBackground(Color.blue);
bluePanel.setBounds(250, 0, 250, 250);
JPanel greenPanel = new JPanel();
greenPanel.setBackground(Color.green);
greenPanel.setBounds(0, 250, 500, 250);
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
frame.setSize(750,750);
frame.add(redPanel);
frame.add(bluePanel);
frame.add(greenPanel);
frame.setVisible(true);
}
다른 컴포넌트를 생성해서 패널에 추가할 수 있다.
//other components
JLabel label1 = new JLabel("HI");
JLabel label2 = new JLabel("HELLO");
ImageIcon image = new ImageIcon("picture.png");
JLabel label3 = new JLabel(image);
greenPanel.setLayout(new BorderLayout()); //image의 위치 수정
redPanel.add(label1);
bluePanel.add(label2);
greenPanel.add(label3);
*여기서 ImageIcon의 경우 따로 label에 추가를 해줘야한다.
'Today I Learned' 카테고리의 다른 글
JAVA LayoutManager(배치관리자) : FlowLayout, GridLayout (0) | 2022.11.05 |
---|---|
JAVA LayoutManager(배치관리자) : BorderLayout (0) | 2022.11.05 |
File Class - write/read (0) | 2022.10.29 |
HTTP 1.1) http통신, stateless, mime 타입 (0) | 2022.01.13 |
스프링부트 프로젝트 생성하기 / 실행 error 해결하기 (0) | 2022.01.12 |