프로그래밍/② JAVA(자바) 프로젝트

② JAVA(자바) 프로젝트-11 TextArea안에 있는 텍스트의 크기,색 바꾸기 == Changing the size, color of text in a JTextArea

ronul 2017. 5. 4. 13:23
300x250

 

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();
  }
}
 


코드설명은 주석으로 해놓았으니 보시면 좋을거 같습니다.

300x250