2013-08-03 5 views
-3

텍스트 필드 t1에 쓰여진 글꼴 스타일을 변경하는 간단한 굵게 및 기울임 꼴 확인란을 만들고 있습니다. 나는 이것을했으나 도움이되지 않았다.Java에서 ItemListener 관련 문제

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 


public class S4 extends JFrame implements ItemListener{ 
    public S4(){ 
     setSize(300,150); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     JCheckBox c1,c2; 
     JTextField t1; 
     Panel p1 = new Panel(); 
     c1 = new JCheckBox("Bold",false); 
     c2 = new JCheckBox("Italic",false); 
     t1 = new JTextField(40); 
     p1.add(t1); 
     p1.add(c1); 
     p1.add(c2);   
     c1.addItemListener(this); 
     c1.addItemListener(this); 
     getContentPane().add(p1); 
    } 
    public void itemStateChanged(ItemEvent e){ 
     Font f;   
     if(c1.isSelected() && c2.isSelected()){ 
      f = new Font("Aerial",Font.BOLD+Font.ITALIC,13); 
     } 
     else if (c1.isSelected()){ 
      f = new Font("Aerial",Font.BOLD,13); 
     } 
     else if (c2.isSelected()){ 
      f = new Font("Aerial",Font.ITALIC,13); 
     } 
     else { 
      f = new Font("Aerial",Font.PLAIN,13); 
     } 
     t1.setFont(f); 
    }  
    public static void main(String [] args){ 
     new S4(); 
    } 
} 
+0

당신은 질문을 게시하지 않았습니다. 네가하려는 것은 무엇인가? 무슨 일 이니? – chrylis

+1

왜 item1을 c1에 두 번 추가 했습니까? 나는 당신이 c1.addItemListener (this)를 의미한다고 생각합니다; c2.addItemListener (this); – ghostbust555

답변

0

음, 먼저 하나의 메소드 내에서 변수를 선언 한 다음 다른 변수에서 변수를 사용할 수 없습니다. JCheckBox c1, c2;JTextField t1;을 클래스 자체에 선언해야합니다.

청취자를 추가하는 위치를 살펴보고 c1에 두 번 청취자를 추가하십시오. 한 번만 추가하려면 c1으로, 한 번만 c2으로 추가하십시오.

여기에 소스 코드가 있지만 작은 변경 사항이 있으므로 작동합니다! 사용자 정의 설치 글꼴을 사용하고,하지 않는 한

import java.awt.Font; 
import java.awt.Panel; 
import java.awt.event.ItemEvent; 
import java.awt.event.ItemListener; 

import javax.swing.JCheckBox; 
import javax.swing.JFrame; 
import javax.swing.JTextField; 

public class S4 extends JFrame implements ItemListener { 

    JCheckBox c1, c2; 
    JTextField t1; 

    public S4() { 
     setSize(300,150); 
     setVisible(true); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Panel p1 = new Panel(); 
     c1 = new JCheckBox("Bold",false); 
     c2 = new JCheckBox("Italic",false); 
     t1 = new JTextField(40); 
     p1.add(t1); 
     p1.add(c1); 
     p1.add(c2);   
     c1.addItemListener(this); 
     c1.addItemListener(this); 
     getContentPane().add(p1); 
    } 

    public void itemStateChanged(ItemEvent e){ 
     Font f;   
     if(c1.isSelected() && c2.isSelected()){ 
      f = new Font("Arial",Font.BOLD+Font.ITALIC,13); 
     } 
     else if (c1.isSelected()){ 
      f = new Font("Arial",Font.BOLD,13); 
     } 
     else if (c2.isSelected()){ 
      f = new Font("Arial",Font.ITALIC,13); 
     } 
     else { 
      f = new Font("Arial",Font.PLAIN,13); 
     } 

     t1.setFont(f); 
    } 

    public static void main(String [] args){ 
     new S4(); 
    } 
} 

또한 사용하고있는 글꼴의 철자가 작업

은 글꼴 "굴림"철자. 한 번 이렇게. http://www.dafont.com/aerial.font

+0

도움을 주셔서 감사합니다 ... 나는 그것을 얻었다 고 생각합니다 :) –