このコードは、テキストフィールドにテキストを挿入し、テキストをラベルに転送することについてユーザがJComboBox
でフォントスタイルを選択できるようにします。ユーザーはフォントを選択します。テキストフィールド内のテキストが表示されますが、コンボボックスで選択するとフォントが変更されません
package hw;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class HW {
public static void main(String[] args) {
/*from this code is adding the frame, label, textfield, panels, panel background color and the location of the labels and textfields*/
String [] cb = {"Comic Sans MS", "Times New Roman", "Arial Black"};
JFrame frames = new JFrame();
frames.setVisible(true);
frames.setSize(700, 500);
frames.setResizable(false);
frames.setLocation(170, 100);
JPanel panels = new JPanel();
frames.add(panels);
panels.setBackground(new Color(40, 136, 168));
panels.setLayout(null);
JTextField tf1 = new JTextField();
panels.add(tf1);
tf1.setBounds(90, 150, 100, 25);
JLabel label1 = new JLabel("ENTER TEXT");
panels.add(label1);
label1.setBounds(100, 30, 150, 100);
JLabel label2 = new JLabel("FONT STYLE");
panels.add(label2);
label2.setBounds(400, 30, 150, 100);
JComboBox combo = new JComboBox(cb);
panels.add(combo);
combo.setBounds(400, 150, 150, 25);
JLabel label3 = new JLabel("");
panels.add(label3);
label3.setBounds(310, 250, 150, 100);
label3.setText("");
/* this part below is the itemlistener and itemevent, i dont know the if this part below is correct because the font in the inserted text wont change but the text being insert in textfield is showing up in the jlabel*/
combo.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent event){
String word;
if (event.getStateChange()==ItemEvent.SELECTED){
label3.setText(word=tf1.getText());
label3.setFont(new Font("Comic Sans MS", Font.PLAIN, 14));
}
else if (event.getStateChange()==ItemEvent.SELECTED) {
label3.setText(word=tf1.getText());
label3.setFont(new Font("Times New Roman", Font.PLAIN, 14));
}
else if (event.getStateChange()==ItemEvent.SELECTED) {
label3.setText(word=tf1.getText());
label3.setFont(new Font("Arial Black", Font.PLAIN, 14));
}
/* the else and else if statement is not working, i dont know how to correct this problem*/
}
}
});
}
}
私はトラブルにこの問題を修正する必要があり、私は彼らがJComboBox
で選択された場合、フォントは変更に文句を言わない理由は、問題の主な原因がどこにあるか知りません。
リスナーにデバッグコードを追加しましたか?実行されているコードのブロックを確認するために、各if条件に単純なSystem.out.println(...)ステートメントを追加します。同じif条件のif文がなぜ3つあるのかわかりません。 – camickr
if else文の末尾にjoptionpaneを入れます。 –
'panels.setLayout(null);' 1)Java GUIは、異なるロケールで異なるPLAFを使用する異なるOS、画面サイズ、画面解像度などで動作する必要があります。したがって、ピクセルの完全なレイアウトには役立ちません。代わりに、レイアウトマネージャや[それらの組み合わせ](http://stackoverflow.com/a/5630271/418556)と[空白](http://stackoverflow.com/a/17874718/)のレイアウトパディングとボーダーを使用してください。 418556)。 2)すぐに助けを得るために、[MCVE]または[短く、自己完結型の正しい例](http://www.sscce.org/)を投稿してください。 –