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