2017-12-13 12 views
0

テキストフィールドと2つのチェックボックスに太字とイタリックのテキストを付ける次のコードがあります。イベントリスナーはitemStateChangeですが、2番目のif elseステートメントでのみ動作し、最初のステートメントはスキップします。 太字のイタリック体に切り替えることを試みましたが、イタリック体は機能していますが、太字は機能しません。したがって、else文だけが動作していれば2番目です。itemStateChanged()1つのチェックボックスのみが影響を受けます

コードが

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

怒鳴る与えているあなたは、2つのオプションがあります。

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

     } 
    } 
} 

関連する問題