Sina.iRoid
چهارشنبه 23 مهر 1393, 16:25 عصر
سلام. دوستان من این برنامه رو نوشتم. به نظر خودم همه چیزش درسته. اما اجرا نمیشه. می خوام وقتی که چک-باکس ها انتخاب میشه، فونت تکست-فیلد هم عوض بشه. اما این اتفاق نمی افته.
ممنوت میشم اگر راهنماییم کنید.
کلاس CheckBoxFrame:
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class CheckBoxFrame extends JFrame {
public JTextField textField; //displays text in changing fonts
public JCheckBox boldCheckBox; //to select/deselect bold
public JCheckBox italicCheckBox; //to select/deselect italic
//Constructor
public CheckBoxFrame() {
super("JCheckBox Frame");
setLayout(new FlowLayout());
//set up JTextField and set its font
textField = new JTextField("Watch the font style change", 20);
textField.setFont(new Font("Serif", Font.PLAIN, 15));
add(textField); //add textField to frame
//Create CheckBox
boldCheckBox = new JCheckBox("Bold");
italicCheckBox = new JCheckBox("Italic");
add(boldCheckBox);
add(italicCheckBox);
//Create object from CheckBoxHandler
CheckBoxHandler ob = new CheckBoxHandler();
boldCheckBox.addItemListener(ob);
italicCheckBox.addItemListener(ob);
}
}
کلاس CheckBoxHandler:
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class CheckBoxHandler implements ItemListener{
@Override
public void itemStateChanged(ItemEvent e) {
CheckBoxFrame ob = new CheckBoxFrame(); //Object from CheckBoxFram
Font font = null; //stores the new font
if ((ob.boldCheckBox.isSelected()) && (ob.italicCheckBox.isSelected())) {
font = new Font("Serif", Font.BOLD + Font.ITALIC, 15);
}else if (ob.boldCheckBox.isSelected()) {
font = new Font("Serif", Font.BOLD, 15);
}else if (ob.italicCheckBox.isSelected()) {
font = new Font("Serif", Font.ITALIC, 15);
}else {
font = new Font("Serif", Font.PLAIN, 15);
}
ob.textField.setFont(font); //set textField's font
}
}
و این هم کلاس اصلی برنامه:
public class DriverClass {
public static void main(String[] args) {
//Object from CheckBoxFrame
CheckBoxFrame ob = new CheckBoxFrame();
ob.setSize(400, 300);
ob.setVisible(true);
}
}
من از کتاب دایتل دارم این مطالب و می خونم. فرق این کد با کد کتاب در اینه که، کتاب فقط دو تا کلاس تعریف کرده. یعنی کلاس CheckBoxHandler و من خودم تعریف کردم اما کتاب این کلاس و داخل کلاس CheckBoxFrame نوشته.
و اینکه میشه بگین که این برنامه از لحاظ شی گرایی درست هست یا نه!؟
ممنون.
ممنوت میشم اگر راهنماییم کنید.
کلاس CheckBoxFrame:
import java.awt.FlowLayout;
import java.awt.Font;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class CheckBoxFrame extends JFrame {
public JTextField textField; //displays text in changing fonts
public JCheckBox boldCheckBox; //to select/deselect bold
public JCheckBox italicCheckBox; //to select/deselect italic
//Constructor
public CheckBoxFrame() {
super("JCheckBox Frame");
setLayout(new FlowLayout());
//set up JTextField and set its font
textField = new JTextField("Watch the font style change", 20);
textField.setFont(new Font("Serif", Font.PLAIN, 15));
add(textField); //add textField to frame
//Create CheckBox
boldCheckBox = new JCheckBox("Bold");
italicCheckBox = new JCheckBox("Italic");
add(boldCheckBox);
add(italicCheckBox);
//Create object from CheckBoxHandler
CheckBoxHandler ob = new CheckBoxHandler();
boldCheckBox.addItemListener(ob);
italicCheckBox.addItemListener(ob);
}
}
کلاس CheckBoxHandler:
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
public class CheckBoxHandler implements ItemListener{
@Override
public void itemStateChanged(ItemEvent e) {
CheckBoxFrame ob = new CheckBoxFrame(); //Object from CheckBoxFram
Font font = null; //stores the new font
if ((ob.boldCheckBox.isSelected()) && (ob.italicCheckBox.isSelected())) {
font = new Font("Serif", Font.BOLD + Font.ITALIC, 15);
}else if (ob.boldCheckBox.isSelected()) {
font = new Font("Serif", Font.BOLD, 15);
}else if (ob.italicCheckBox.isSelected()) {
font = new Font("Serif", Font.ITALIC, 15);
}else {
font = new Font("Serif", Font.PLAIN, 15);
}
ob.textField.setFont(font); //set textField's font
}
}
و این هم کلاس اصلی برنامه:
public class DriverClass {
public static void main(String[] args) {
//Object from CheckBoxFrame
CheckBoxFrame ob = new CheckBoxFrame();
ob.setSize(400, 300);
ob.setVisible(true);
}
}
من از کتاب دایتل دارم این مطالب و می خونم. فرق این کد با کد کتاب در اینه که، کتاب فقط دو تا کلاس تعریف کرده. یعنی کلاس CheckBoxHandler و من خودم تعریف کردم اما کتاب این کلاس و داخل کلاس CheckBoxFrame نوشته.
و اینکه میشه بگین که این برنامه از لحاظ شی گرایی درست هست یا نه!؟
ممنون.