② JAVA(자바) 프로젝트-11 TextArea안에 있는 텍스트의 크기,색 바꾸기 == Changing the size, color of text in a JTextArea
JTextArea안에 있는 텍스트 들을 크기와 색상을 버튼으로 수정할 수 있는 프로그램입니다.
코드입니다.
txtChange.java |
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class txtChange {
JFrame frame,frame3,frame4,frame5;
JTextArea JTxt;
JButton fontColorBtn,SettingBtn,fontBtn,okBtn4,okBtn5;
JPanel middlePanel,underPanel,rightPanel,f5centerPanel,f5eastPanel,f4centerPanel,f4eastPanel;
Container contentPane,contentPane4,contentPane5;
JSlider [] sl1 = new JSlider [3];
JSlider sl2 = new JSlider();
// Frame
public txtChange() {
frame = new JFrame("JTextArea 세팅");
contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
frame.setPreferredSize(new Dimension(500, 500));
frame.setLocation(350, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
// JTextArea
JTxt = new JTextArea(25, 50);
JTxt.setLineWrap(true);
JScrollPane scroller = new JScrollPane(JTxt); // 스크롤바 추가
JTxt.setLineWrap(true); //자동 줄바꾸기
// 수직 스크롤바만 생성
scroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
// JButton
fontColorBtn = new JButton("글자색 조정");
fontColorListener fontColorListener = new fontColorListener();
fontColorBtn.addActionListener(fontColorListener);
fontColorBtn.setVisible(false);
SettingBtn = new JButton("Txt 세팅");
SettingListener settingLiseter = new SettingListener();
SettingBtn.addActionListener(settingLiseter);
fontBtn = new JButton("글자크기 조정");
fontListener fontListener = new fontListener();
fontBtn.addActionListener(fontListener);
fontBtn.setVisible(false);
// Panel Create
middlePanel = new JPanel();
rightPanel = new JPanel();
//middleline
middlePanel.setLayout(new GridLayout(1,1));
middlePanel.add(scroller);
//rightline
rightPanel.setLayout(new GridLayout(10,1));
rightPanel.add(SettingBtn);
rightPanel.add(fontBtn);
rightPanel.add(fontColorBtn);
// Frame Layout
frame.getContentPane().add(BorderLayout.EAST, rightPanel);
frame.getContentPane().add(BorderLayout.CENTER, middlePanel);
}
//글씨조정
class fontListener implements ActionListener{
public void actionPerformed(ActionEvent event){
frame5 = new JFrame("슬라이더로 글씨 크기조정");
frame5.setPreferredSize(new Dimension(300, 230));
frame5.setLocation(550, 300);
frame5.pack();
frame5.setResizable(false);
frame5.setVisible(true);
okBtn5 = new JButton("확 인");
OkBtn5Liseter okBtn5Liseter = new OkBtn5Liseter();
okBtn5.addActionListener(okBtn5Liseter);
f5centerPanel = new JPanel();
f5centerPanel.setLayout(new GridLayout(1,1));
f5eastPanel = new JPanel();
f5eastPanel.setLayout(new GridLayout(1,1));
f5eastPanel.add(okBtn5);
frame5.getContentPane().add(BorderLayout.CENTER, f5centerPanel);
frame5.getContentPane().add(BorderLayout.EAST, f5eastPanel);
contentPane5 = frame5.getContentPane();
contentPane5.setLayout(new FlowLayout());
sl2 = new JSlider(JSlider.HORIZONTAL, 0, 20, 12);
sl2.setPaintLabels(true);
sl2.setPaintTicks(true);
sl2.setPaintTrack(true);
sl2.setMajorTickSpacing(5);
sl2.setMinorTickSpacing(1);
sl2.addChangeListener(new MyChangeListener2());
f5centerPanel.add(sl2); //슬라이더 삽입
int siz = sl2.getValue(); // 슬라이더로부터 값얻기
JTxt.setFont(new Font("RO",Font.PLAIN,12));
}
}
class MyChangeListener2 implements ChangeListener {
public void stateChanged(ChangeEvent e) { //슬라이더 컴포넌트의 값이 변경되면 호출됨
int rw = sl2.getValue(); //슬라이더로부터 성분 값 얻기
JTxt.setFont(new Font("RO",Font.PLAIN,rw));
}
}
class OkBtn5Liseter implements ActionListener{
public void actionPerformed(ActionEvent event){
frame5.setVisible(false);
}
}
//글자색 조정
class fontColorListener implements ActionListener{
public void actionPerformed(ActionEvent event){
frame4 = new JFrame("슬라이더로 글자색조정");
frame4.setPreferredSize(new Dimension(300, 230));
frame4.setLocation(550, 300);
frame4.pack();
frame4.setResizable(false);
frame4.setVisible(true);
okBtn4 = new JButton("확 인");
OkBtn4Liseter okBtn4Liseter = new OkBtn4Liseter();
okBtn4.addActionListener(okBtn4Liseter);
f4centerPanel = new JPanel();
f4centerPanel.setLayout(new GridLayout(3,1));
f4eastPanel = new JPanel();
f4eastPanel.setLayout(new GridLayout(1,1));
f4eastPanel.add(okBtn4);
frame4.getContentPane().add(BorderLayout.CENTER, f4centerPanel);
frame4.getContentPane().add(BorderLayout.EAST, f4eastPanel);
contentPane4 = frame4.getContentPane();
contentPane4.setLayout(new FlowLayout());
//0~255 사이의 값을 선택할 수 있는 슬라이더 생성. 초기값은 128
for(int i=0; i<sl1.length; i++) {
sl1[i] = new JSlider(JSlider.HORIZONTAL, 0, 255, 0);
sl1[i].setPaintLabels(true);
sl1[i].setPaintTicks(true);
sl1[i].setPaintTrack(true);
sl1[i].setMajorTickSpacing(50);
sl1[i].setMinorTickSpacing(10);
// 슬라이더에 Change 리스너 등록
sl1[i].addChangeListener(new MyChangeListener1());
f4centerPanel.add(sl1[i]); // 슬라이더를 컨텐트팬에 삽입
}
sl1[0].setForeground(Color.RED); //s[0] 슬라이더는 RED 값 선택
sl1[1].setForeground(Color.GREEN); //s[1] 슬라이더는 GREEN 값 선택
sl1[2].setForeground(Color.BLUE); //s[0] 슬라이더는 BLUE 값 선택
// 현재 3개의 슬라이더로부터 값을 얻어 초기 colorLabel의 배경색 설정
int r1 = sl1[0].getValue(); // 첫번째 슬라이더로부터 R 성분 값 얻기
int g1 = sl1[1].getValue(); // 두번째 슬라이더로부터 G 성분 값 얻기
int b1 = sl1[2].getValue(); // 세번째 슬라이더로부터 B 성분 값 얻기
JTxt.setForeground(new Color(r1,g1,b1)); // r,g,b 값을 이용하여 새로운 색 설정
}
}
class MyChangeListener1 implements ChangeListener {
public void stateChanged(ChangeEvent e) { //슬라이더 컴포넌트의 값이 변경되면 호출됨
// 현재 3개의 슬라이더로부터 값을 얻어 colorLabel의 배경색 변경
int r1 = sl1[0].getValue(); // 첫번째 슬라이더로부터 R 성분 값 얻기
int g1 = sl1[1].getValue(); // 두번째 슬라이더로부터 G 성분 값 얻기
int b1 = sl1[2].getValue(); // 세번째 슬라이더로부터 B 성분 값 얻기
JTxt.setForeground(new Color(r1,g1,b1)); // r,g,b 값을 이용하여 새로운 색 설정
}
}
class OkBtn4Liseter implements ActionListener{
public void actionPerformed(ActionEvent event){
frame4.setVisible(false);
}
}
//세팅--
class SettingListener implements ActionListener{
public void actionPerformed(ActionEvent event){
if(fontBtn.isVisible()){
SettingBtn.setText("Txt 세팅");
fontBtn.setVisible(false);
fontColorBtn.setVisible(false);
}
else{
SettingBtn.setText("돌아가기");
fontBtn.setVisible(true);
fontColorBtn.setVisible(true);
}
}
}
public static void main(String[] args){
txtChange first = new txtChange();
}
}
코드설명은 주석으로 해놓았으니 보시면 좋을거 같습니다.