그냥 이클립스에서 GUI로 UI짜고 코드를 인텔리제이에서 짜는게 편하다.
인텔리제이에서 Frame짜는게 생각보다 불편한 점이 많았음
UI는 이클립스에서 WindowBuilder로 제작
이벤트 처리만 인텔리제이에서 코드 짜줌
ColorTextArea 이벤트 생성
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class WindowBuilderApp extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel contentPane;
private JButton redButton;
private JButton greenButton;
private JButton blueButton;
private JTextArea textArea;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
WindowBuilderApp frame = new WindowBuilderApp();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public WindowBuilderApp() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(800, 200, 400, 500);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(new BorderLayout(0, 0));
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.NORTH);
panel.setLayout(new GridLayout(1, 3, 3, 0));
redButton = new JButton("빨간색");
redButton.setForeground(new Color(255, 0, 0));
redButton.setFont(new Font("굴림체", Font.BOLD, 20));
panel.add(redButton);
greenButton = new JButton("초록색");
greenButton.setForeground(new Color(0, 255, 0));
greenButton.setFont(new Font("굴림체", Font.BOLD, 20));
panel.add(greenButton);
blueButton = new JButton("파란색");
blueButton.setForeground(new Color(0, 0, 255));
blueButton.setFont(new Font("굴림체", Font.BOLD, 20));
panel.add(blueButton);
JScrollPane scrollPane = new JScrollPane();
contentPane.add(scrollPane);
textArea = new JTextArea();
textArea.setFocusable(false);
textArea.setFont(new Font("굴림체", Font.BOLD, 20));
scrollPane.setViewportView(textArea);
// 이 부분부터 인텔리제이에서 작성
// TextFiled에서 글 작성 후 인벤트 발생시 TextArea에 글 추가됨
JTextField textField = new JTextField();
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String text=textField.getText();
if(!text.equals("")) {
textArea.append(text+"\n");
textArea.setCaretPosition(textArea.getText().length());
textField.setText("");
}
}
});
redButton.addActionListener(new ColorTextArea());
greenButton.addActionListener(new ColorTextArea());
blueButton.addActionListener(new ColorTextArea());
textField.setFont(new Font("굴림체", Font.BOLD, 20));
contentPane.add(textField, BorderLayout.SOUTH);
textField.setColumns(10);
}
// 상단 RED, GREEN, BLUE 버튼 클릭시 글자색 변경
public class ColorTextArea implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == redButton) {
textArea.setForeground(Color.RED);
} else if(source == greenButton) {
textArea.setForeground(Color.GREEN);
} else if(source == blueButton) {
textArea.setForeground(Color.BLUE);
}
}
}
}