2017-12-13 4 views
0

텍스트 필드와 두 개의 체크 박스에 굵게 및 기울임 꼴 텍스트를 제공하는 다음 코드가 있습니다. eventListener는 itemStateChange이지만 두 번째 if else 문과 함께 작동하고 첫 번째 문을 건너 뜁니다. 나는 기울임 꼴로 굵은 글씨로 바꾸려고 시도했지만 이탤릭체는 작동하지만 굵게는 작동하지 않는다. 그래서 else 문장 만 작동합니다.itemStateChanged() 하나의 체크 박스에만 영향을 받음

코드가

import java.awt.FlowLayout; 

import java.awt.Font; 

import java.awt.event.ActionEvent; 

import java.awt.event.ActionListener; 

import java.awt.event.ItemEvent; 

import java.awt.event.ItemListener; 

import javax.swing.JCheckBox; 

import javax.swing.JFrame; 

import javax.swing.JTextField; 

public class CreateFrame extends JFrame implements ItemListener { 

private JTextField textField; 

private JCheckBox bold, itelaic; 

public CreateFrame() { 

setDefaultCloseOperation(EXIT_ON_CLOSE); 

setTitle("JCkeckBox Test"); 

textField = new JTextField(30); 

textField.setText("Watch the font style change"); 

bold = new JCheckBox("Bold"); 

itelaic = new JCheckBox("Italic"); 

add(textField); 

add(bold); 

add(itelaic); 

bold.addItemListener(this); 

itelaic.addItemListener(this); 

setLayout(new FlowLayout()); 

setSize(100, 120); 

setVisible(true); 

} 

public static void main(String[] args) { 

new CreateFrame(); 

} 

public void itemStateChanged(ItemEvent e) { 

if(bold.isSelected()) { 

textField.setFont(new Font("TimesRoman", Font.BOLD,14)); 

} else { 

textField.setFont(new Font("TimesRoman", Font.PLAIN,14)); 

} 

if(itelaic.isSelected()){ 

textField.setFont(new Font("TimesRoman", Font.ITALIC,14)); 

} else { 

textField.setFont(new Font("TimesRoman", Font.PLAIN,14)); 

} 

} 

} 

답변

0

노호 주어집니다 당신은 두 가지 옵션이 있습니다.

bold.addItemListener(new ItemListener() { 
    @Override 
    public void itemStateChanged(ItemEvent e) { 
     if (bold.isSelected()) { 
      textField.setFont(new Font("TimesRoman", Font.BOLD, 14)); 
     } else { 
      textField.setFont(new Font("TimesRoman", Font.PLAIN, 14)); 
     } 
    } 
}); 

하거나 상태를 확인하기 전에 당신은 ItemEvent의 소스를 결정 : 어느 당신은 모두 CheckBoxes이 같은 익명의 내부 ItemListener을 만드는 두 옵션은 잘 작동

public void itemStateChanged(ItemEvent e) { 
    if (e.getSource() == bold) { 
     if (bold.isSelected()) { 

      textField.setFont(new Font("TimesRoman", Font.BOLD, 14)); 

     } else { 

      textField.setFont(new Font("TimesRoman", Font.PLAIN, 14)); 

     } 
    } else if (e.getSource() == itelaic) { 
     if (itelaic.isSelected()) { 

      textField.setFont(new Font("TimesRoman", Font.ITALIC, 14)); 

     } else { 

      textField.setFont(new Font("TimesRoman", Font.PLAIN, 14)); 

     } 
    } 
} 

관련 문제