الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

برنامج ال Word مبسط

رائج
بدأه mr.beshoy في 25 يونيو 2009 · 183 رد · 9,034 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#51

عادي يا بيشوي

لسه ياما هتشوف

أخ عصام مافائدة glue في حال وجود strut

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#52

أنا حذفت ال glue

لم تؤثر إطلاقاً

فأعتقد أن لا داعى من وجودها

و لا ايه ؟؟

شكراً

#53

لا يا سي بيشوي، يوجد داعي لوجودها

هذا باستعمال glue

img00.png

وهذا بدون glue

img0.png

يا علاء، الglue تملأ كل الفراغ المتوفر، بينما الstrut تشغل فقط المساحة التي تحدد

#54

شكراً ...

مشكلة تانى دلوقتى

انا مش عارف ايه الى بيحصل فيها ...

عملت بانل كده يظهر عليها sample للخط و حجمه و شكله

أنا عاوز أضع هذه البانل فى النتصف ويكون فى مساحة معقولة بينها و بيمة الكومبوبوكس الى فوق

يمين فى شمال و محاولات بسيطة كده ... البانل بتظهر فى نفس الصف بتاع البانل التى يُوجد عليها كوبوبوكس ...

محاولات أخرى كده : عملت بانل نضع بها samplepanel و بانل اساسية تحمل كل من samplepanel & comboBoxpanel

و لا يريد أن يعمل بالمرة

انظروا الشفيرة ( السطور التى أمامها كومنت هى التى ضفتها - انظروا عليها ) :

public class FontDilogTest extends JDialog {

	Box mainComBoxPanel = Box.createHorizontalBox();
	JPanel comfontpanel, comfontstaylePanel, comsizeFontpanel, mainSamplePanel, samplePanel, mainPanel;
	JLabel labelFont, labelFontstyle, labelSize;
	JComboBox comboBoxFont, comboBoxFontstyle, comboBoxFontSize;
	String[] font;
	int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
	String[] fontNames = {"Bold", "Italic", "BoldItalic"};
	String[] sizeFont = {"20", "22", "24", "26", " 28", "36", "48", "72"};

	public FontDilogTest() {
		IntializePanel();
		IntializeLapel();

		comfontpanel.setLayout(new GridLayout(2, 1));
		comfontstaylePanel.setLayout(new GridLayout(2, 1));
		comsizeFontpanel.setLayout(new GridLayout(2, 1));

  //	  samplePanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 5));

		font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
		comboBoxFont = new JComboBox(font);

		comboBoxFontstyle = new JComboBox();
		for (int i = 0; i < fontStyle.length; ++i) {
			comboBoxFontstyle.addItem(fontNames);
		}

		comboBoxFontSize = new JComboBox();
		for (int i = 0; i < sizeFont.length; ++i) {
			comboBoxFontSize.addItem(sizeFont);
		}

		comfontpanel.add(labelFont);
		comfontpanel.add(comboBoxFont);

		comfontstaylePanel.add(labelFontstyle);
		comfontstaylePanel.add(comboBoxFontstyle);

		comsizeFontpanel.add(labelSize);
		comsizeFontpanel.add(comboBoxFontSize);

		comfontpanel.setPreferredSize(new Dimension(40, 40));
		comfontstaylePanel.setPreferredSize(new Dimension(40, 40));
		comsizeFontpanel.setPreferredSize(new Dimension(40, 40));


		mainComBoxPanel.add(comfontpanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comfontstaylePanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comsizeFontpanel);
		mainComBoxPanel.add(Box.createHorizontalGlue());

	//	mainSamplePanel.add(samplePanel, Box.createVerticalStrut(100));

		mainPanel.add(mainComBoxPanel, BorderLayout.NORTH);
	 //   mainPanel.add(mainSamplePanel, BorderLayout.CENTER);
		getContentPane().add(mainPanel, new GridLayout(2, 1));

	}

	public static void main(String[] args) {
		FontDilogTest f = new FontDilogTest();
		f.setVisible(true);
		f.setLocationRelativeTo(null);
		f.setSize(new Dimension(600, 300));
	}

	private void IntializePanel() {
	   // mainPanel = new JPanel();
		comfontpanel = new JPanel();
		comfontstaylePanel = new JPanel();
		comsizeFontpanel = new JPanel();
	  //  mainSamplePanel = new JPanel();
	   // samplePanel = new JPanel();
	}

	private void IntializeLapel() {
		labelFont = new JLabel("Font:");
		labelFontstyle = new JLabel("Font Style:");
		labelSize = new JLabel("Size:");

	}
}
#55

يا سي عاطف، أحيانا تعمل أشياء لا أعلم من أين تأتي بها


..................
getContentPane().add(mainPanel, new GridLayout(2, 1));</span>
 <span class="postcolor">mainSamplePanel.add(samplePanel, Box.createVerticalStrut(100));

هذان السطران لا معنى لهما

بالنسبة لJPanel، فهي تستعمل FlowLayout، وهذا سبق أن قيل هنا في موضوعك، وبما أنك تريد استعمال BorderLayout في mainPanel فيجب أن تحدد ذلك في البرنامج

وهذا الكود مع بعض التعديلات


import javax.swing.*;

public class FontDilogTest extends JDialog {

Box mainComBoxPanel = Box.createHorizontalBox();
JPanel comfontpanel, comfontstaylePanel, comsizeFontpanel, mainSamplePanel, samplePanel, mainPanel;
JLabel labelFont, labelFontstyle, labelSize;
JComboBox comboBoxFont, comboBoxFontstyle, comboBoxFontSize;
String[] font;
int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
String[] fontNames = {"Bold", "Italic", "BoldItalic"};
String[] sizeFont = {"20", "22", "24", "26", " 28", "36", "48", "72"};

public FontDilogTest() {
IntializePanel();
IntializeLapel();

comfontpanel.setLayout(new GridLayout(2, 1));
comfontstaylePanel.setLayout(new GridLayout(2, 1));
comsizeFontpanel.setLayout(new GridLayout(2, 1));

samplePanel.setBorder(BorderFactory.createLineBorder(Color.BLACK, 5));

font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
comboBoxFont = new JComboBox(font);

comboBoxFontstyle = new JComboBox();
for (int i = 0; i < fontStyle.length; ++i) {
comboBoxFontstyle.addItem(fontNames);
}

comboBoxFontSize = new JComboBox();
for (int i = 0; i < sizeFont.length; ++i) {
comboBoxFontSize.addItem(sizeFont);
}

comfontpanel.add(labelFont);
comfontpanel.add(comboBoxFont);

comfontstaylePanel.add(labelFontstyle);
comfontstaylePanel.add(comboBoxFontstyle);

comsizeFontpanel.add(labelSize);
comsizeFontpanel.add(comboBoxFontSize);

comfontpanel.setPreferredSize(new Dimension(120, 40));
comfontstaylePanel.setPreferredSize(new Dimension(60, 40));
comsizeFontpanel.setPreferredSize(new Dimension(30, 40));

mainComBoxPanel.add(comfontpanel);
mainComBoxPanel.add(Box.createHorizontalStrut(10));

mainComBoxPanel.add(comfontstaylePanel);
mainComBoxPanel.add(Box.createHorizontalStrut(10));

mainComBoxPanel.add(comsizeFontpanel);
mainComBoxPanel.add(Box.createHorizontalGlue());

mainSamplePanel.add(samplePanel);

mainPanel.setLayout(new BorderLayout());
mainPanel.add(mainComBoxPanel, BorderLayout.NORTH);
mainPanel.add(mainSamplePanel, BorderLayout.CENTER);
getContentPane().add(mainPanel);

}

public static void main(String[] args) {
FontDilogTest f = new FontDilogTest();
f.setVisible(true);
f.setLocationRelativeTo(null);
f.setSize(new Dimension(600, 300));
}

private void IntializePanel() {
mainPanel = new JPanel();
comfontpanel = new JPanel();
comfontstaylePanel = new JPanel();
comsizeFontpanel = new JPanel();
mainSamplePanel = new JPanel();
samplePanel = new JPanel();
}

private void IntializeLapel() {
labelFont = new JLabel("Font:");
labelFontstyle = new JLabel("Font Style:");
labelSize = new JLabel("Size:");

}
}
 import java.awt.*;

#56

السطر الذى اعترضت عليه .. كان مقصدى منه انه يجعل البانل samplepanel تحت البانل كوبموبوكس بانل راسياً بمسافة 100

مكنتش فاهم صح ..

أما من طريقة لكتابة string على بانل من غير استعمال ال textarea ثم نضيفه على بانل

جربت كده : panel.setText(") ; اتضح انها غلط

panel .add ("") ;

بردو غلط

الى يعرف يقول

و انا ببحبث بردو و بشوف طريقة ...

استحمنى اخ عصام عارف انك تعبت منى بس المحاولات و كثرتها هتجيب نتيجة

شكراً لكم جميعاً

#57

إستعمل JLabel بدل JPanel بالنسبة لsamplePanel

عندك يا عاطف مشكلتان

أولا لا تأخد دائما الإقتراحات والملاحظات التي تعطى لك من الأعضاء بعين الإعتبار

ثانيا لا تستعمل توثيق Sun

#58

ماشى ياعم عصام تمت حل المشكلة

و أصبر بس عليا ..... دوام الحال من المُحال ( هنتغير للإحسن )

--------------------------------------------------------------------------------

فاكرين يا حلوين الكلاس الأول الى فيه كل الشغل دلوقتى بقى هنرجعله تانى

------------------------------------------------------

قبل سرد المشكلة الحلوة الجديدة

نعرض الهيئة الجديدة لل application هذا لتنظم العملية و لتوحيد الأفكار :

الكلاس الأول TextEditor :

------------------------------

public class TextEditor extends JFrame implements ActionListener {

	private String[] menus = {"File", "Edit", "Format", "help"};
	private String[] fileItems = {"new", "open", "save", "save As", "print", "Exit"};
	private JMenuItem[] fileMenuItems;
	private String[] editItems = {"undo", "cut", "copy", "past", "delete"};
	private JMenuItem[] editMenuItems;
	private String[] formatItems = {"font"};
	private JMenuItem[] formatMenuItems;
	private String[] helpItems = {"about us"};
	private JMenuItem[] helpMenuItems;
	private String[] images = {"new.JPG", "open.JPG", "save.JPG", "copy.JPG", "paste.JPG"};
	private String[] imageName = {"new", "open", "save", "copy", "paste"};
	private ImageIcon[] imagicons;
	private JButton[] buttons;
	private JMenu menu;
	private JMenuBar bar, barIcon;
	private JTextArea area;
	private JFileChooser fc;
	private Clipboard clib = Toolkit.getDefaultToolkit().getSystemClipboard();
	private UndoManager undo = new UndoManager();
 //   private FontClass fontClass;

	public TextEditor() {
		area = new JTextArea();
	   // fontClass = new FontClass();
		getContentPane().add(area);
		intializeMenuBar();
		intializeMenuItems();
		intializeIcons();
	}

	public static void main(String[] args) {
		TextEditor fram = new TextEditor();
		fram.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fram.setSize(600, 300);
		fram.setLocationRelativeTo(null);
		fram.setVisible(true);
	}

	private void intializeMenuBar() {
		bar = new JMenuBar();
		for (int i = 0; i < menus.length; ++i) {
			menu = new JMenu(menus);
			bar.add(menu);
		}
		setJMenuBar(bar);
		bar.add(menu);
	}

	private void intializeIcons() {
		barIcon = new JMenuBar();
		buttons = new JButton[images.length];
		imagicons = new ImageIcon[images.length];
		for (int i = 0; i < images.length; ++i) {
			imagicons = new ImageIcon(getClass().getResource(images));
			buttons = new JButton();
			buttons.setIcon(imagicons);
			buttons.setToolTipText(imageName);
			buttons.addActionListener(this);
			barIcon.add(buttons);
		}
		getContentPane().add(barIcon, BorderLayout.NORTH);

	}

	private void intializeMenuItems() {

		fileMenuItems = new JMenuItem[fileItems.length];
		for (int i = 0; i < fileItems.length; ++i) {
			fileMenuItems = new JMenuItem(fileItems);
			bar.getMenu(0).add(fileMenuItems);
			fileMenuItems.addActionListener(this);
		}
		editMenuItems = new JMenuItem[editItems.length];
		for (int i = 0; i < editItems.length; ++i) {
			editMenuItems = new JMenuItem(editItems);
			bar.getMenu(1).add(editMenuItems);
			editMenuItems.addActionListener(this);
		}
		formatMenuItems = new JMenuItem[formatItems.length];
		for (int i = 0; i < formatItems.length; ++i) {
			formatMenuItems = new JMenuItem(formatItems);
			bar.getMenu(2).add(formatMenuItems);
			formatMenuItems.addActionListener(this);
		}
		helpMenuItems = new JMenuItem[helpItems.length];
		for (int i = 0; i < helpItems.length; ++i) {
			helpMenuItems = new JMenuItem(helpItems);
			bar.getMenu(3).add(helpMenuItems);
			helpMenuItems.addActionListener(this);
		}
	}

	public void actionPerformed(ActionEvent e) {
		openFileDialog(e);
		saveFile(e);
		copyCutPastetText(e);
		undoOperation(e);
		fontProperties(e);
	}

	private void openFileDialog(ActionEvent e) {
		if (e.getSource() == fileMenuItems[0] || e.getSource() == buttons[0]) {
			area.setText("");
		}
		if (e.getSource() == fileMenuItems[1] || e.getSource() == buttons[1]) {
			fc = new JFileChooser();
			int ressult = fc.showOpenDialog(fc);
			if (ressult == JFileChooser.CANCEL_OPTION) {
				return;
			}
			if (ressult == JFileChooser.APPROVE_OPTION) {
				readFile(fc.getSelectedFile());
			}
		}
		if (e.getSource() == fileMenuItems[5]) {
			System.exit(0);
		}
	}

	private void readFile(File file) {
		int recCount = 0;
		String record = null;
		DataInputStream dis = null;
		try {
			area.setText("");
			FileInputStream fis = new FileInputStream(file);
			BufferedInputStream bis = new BufferedInputStream(fis);
			dis = new DataInputStream(bis);
			while ((record = dis.readLine()) != null) {
				recCount++;
				area.append(record + "\n");

			}

		} catch (IOException e) {
			JOptionPane.showMessageDialog(null, "you get an IOException error!", "Error", JOptionPane.ERROR_MESSAGE);
		} finally {
			// if the file opened okay, make sure we close it
			if (dis != null) {
				try {
					dis.close();
				} catch (IOException e) {
				}
			}
		}
	}

	private void saveFile(ActionEvent e) {
		fc = new JFileChooser();
		if (e.getSource() == fileMenuItems[3] || e.getSource() == buttons[2]) {
			int resultVal = fc.showSaveDialog(fc);
			if (resultVal == JFileChooser.CANCEL_OPTION) {
				return;
			}
			if (resultVal == JFileChooser.APPROVE_OPTION) {
				saveFile1(fc.getSelectedFile());

			}
		}
	}

	private void saveFile1(File f) {
		FileWriter filewriter = null;
		BufferedWriter writer = null;
		try {
			filewriter = new FileWriter(f);
			writer = new BufferedWriter(filewriter);
			writer.write(area.getText());
			JOptionPane.showMessageDialog(null, "Successfully wrote to the file named" + f.getName() + "go take a look at it");

		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				writer.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

	}

	private void copyCutPastetText(ActionEvent e) {
		if (e.getSource() == editMenuItems[1]) {
			// area.cut();
			clib.setContents(new StringSelection(area.getSelectedText()), null);
			area.replaceSelection("");
		}
		if (e.getSource() == editMenuItems[2] || e.getSource() == buttons[3]) {
			// area.copy();
			clib.setContents(new StringSelection(area.getSelectedText()), null);
		}
		if (e.getSource() == editMenuItems[3] || e.getSource() == buttons[4]) {
			// area.paste();
			Transferable t = clib.getContents(null);
			try {
				String clipcontent = t.getTransferData(DataFlavor.stringFlavor).toString();
				area.insert(clipcontent, area.getCaretPosition());
			} catch (UnsupportedFlavorException ex) {
				ex.printStackTrace();
			} catch (IOException io) {
				io.printStackTrace();
			}
		}
		if (e.getSource() == editMenuItems[4]) {
			area.setText("");
		}

	}

	private void undoOperation(ActionEvent e) {
		area.getDocument().addUndoableEditListener(new UndoableEditListener() {

			public void undoableEditHappened(UndoableEditEvent e) {
				undo.addEdit(e.getEdit());
			}
		});
		if (e.getSource() == editMenuItems[0]) {
			try {
				undo.undo();
			} catch (CannotUndoException CUE) {
				CUE.printStackTrace();
			}
		}
	}

	private void fontProperties(ActionEvent e) {
		if(e.getSource()==formatMenuItems[0]){
			new FontClass().setVisible(true);
 new FontClass().setSize(new Dimension(500, 250));		
	new FontClass().setLocationRelativeTo(null);
	   //	 new FontClass().setLayout(BorderLayout.CENTER);
		}
	}
}

الكلاس الثانى : FontClass

--------------------------------

class FontClass extends JDialog {

	Box mainComBoxPanel = Box.createHorizontalBox();
	JPanel comfontpanel, comfontstaylePanel, comsizeFontpanel, mainSamplePanel, samplePanel, mainPanel, applayPanel, mainApplayPanel;
	JLabel labelFont, labelFontstyle, labelSize, sampleLabel;
	TitledBorder titleSample, fontProperties;
	JComboBox comboBoxFont, comboBoxFontstyle, comboBoxFontSize;
	JButton applayButton, canelButton;
	String[] font;
	int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
	String[] fontNames = {"Bold", "Italic", "BoldItalic"};
	String[] sizeFont = {"20", "22", "24", "26", " 28", "36", "48", "72"};

	public FontClass() {
		font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
		comboBoxFont = new JComboBox(font);
		IntializePanel();
		IntializeLapel();
		//applay panel contain ok & applay buttons
		applayPanel.setLayout(new GridLayout(2, 1));
		applayButton = new JButton("applay");
		canelButton = new JButton("cancel");
		applayPanel.add(applayButton);
		applayPanel.add(canelButton);
		mainApplayPanel.setBackground(Color.BLUE);
		mainApplayPanel.add(applayPanel);
		// panels for comboBox
		comfontpanel.setLayout(new GridLayout(2, 1));
		comfontstaylePanel.setLayout(new GridLayout(2, 1));
		comsizeFontpanel.setLayout(new GridLayout(2, 1));
		// sampel panel for previewing font properties
		titleSample = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 3), "sample");
		samplePanel.setBorder(titleSample);
		sampleLabel.setText("Test");
		samplePanel.setBackground(Color.BLUE);
		samplePanel.add(sampleLabel);

		comboBoxFontstyle = new JComboBox();
		for (int i = 0; i < fontStyle.length; ++i) {
			comboBoxFontstyle.addItem(fontNames);
		}

		comboBoxFontSize = new JComboBox();
		for (int i = 0; i < sizeFont.length; ++i) {
			comboBoxFontSize.addItem(sizeFont);
		}
		comfontpanel.add(labelFont);
		comfontpanel.add(comboBoxFont);
		comfontstaylePanel.add(labelFontstyle);
		comfontstaylePanel.add(comboBoxFontstyle);
		comsizeFontpanel.add(labelSize);
		comsizeFontpanel.add(comboBoxFontSize);
		comfontpanel.setPreferredSize(new Dimension(40, 40));
		comfontstaylePanel.setPreferredSize(new Dimension(40, 40));
		comsizeFontpanel.setPreferredSize(new Dimension(40, 40));

		fontProperties = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 5), "Font properties");
		mainComBoxPanel.setBorder(fontProperties);

		mainComBoxPanel.add(comfontpanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comfontstaylePanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comsizeFontpanel);
		mainComBoxPanel.add(Box.createHorizontalGlue());

		samplePanel.setPreferredSize(new Dimension(200, 100));
		mainSamplePanel.add(samplePanel);

		mainPanel.setLayout(new BorderLayout());
		mainPanel.add(mainComBoxPanel, BorderLayout.NORTH);
		mainPanel.add(mainSamplePanel, BorderLayout.SOUTH);
		mainPanel.add(mainApplayPanel, BorderLayout.EAST);
		getContentPane().add(mainPanel);

	}
	private void IntializePanel() {
		mainPanel = new JPanel();
		comfontpanel = new JPanel();
		comfontstaylePanel = new JPanel();
		comsizeFontpanel = new JPanel();
		mainSamplePanel = new JPanel();
		samplePanel = new JPanel();
		mainApplayPanel = new JPanel();
		applayPanel = new JPanel();
	}

	private void IntializeLapel() {
		labelFont = new JLabel("Font:");
		labelFontstyle = new JLabel("Font Style:");
		labelSize = new JLabel("Size:");
		sampleLabel = new JLabel("Test");

	}
}

عملت acction على الmenu item "font " التى توجد بداخل ال menu format

ثم عملنا calling للكلاس FontClass حتى اذا ما ضغطنا على ال menuItem font يظهر لنا JDilog الذى يحتوى على خصائص الخط

المشكلة تكمن فى أن : عندنا يظهر ال JDilog يظهر بعيدا تماماً و كما نرى فى ابرنامج الوندوز انه يظهر فى المنتصف

لجئت للفكرة :

new FontClass().SetLocationRelativeTo(null);

و لكنها لا تعمل شئ ..

المشكلة الأخرى :

هى أن ال JDilog يظهر صغير الحجم جداً

فقولنا نفعل ذاك لتكبيره

  new FontClass().setSize(new Dimension(500, 250));

و لكنها لا تفعل شئ ...

لماذا هذه الفتاوى الكاذبة :lol:

---------------------------------------------------

بالمناسبة فى الكلاس الأول الجزء الخاص بالأكشن لل font موجود آخر الكلاس مش تتعبوا نفسكم و تبحثوا عنه

شكراً ،،،،

تم تعديل هذه المشاركة بواسطة mr.beshoy في 20 يوليو 2009 في 14:27

#59

سلام ...

------

مش عارف فين شبابنا الحلوين الصراحة بيختفوا مرة واحدة

------------------------------------------------------------

بفرض أن المشكلة فى المشاركة السابقة لم يتوصل أحد لحلها نتركها لحين و لكنى لا اعتقد ان من هنا لا يعرفونها فمن يعرفها يخبرنا

---------------------------------------------------------------------------------------------------------------------------

أتكلم فى المشكلة الثانية :

-----------------------

هى انى أريد عندما أختار الخط و نوعه و حجمه

يحدث تغيير على كلمة Test كنوع من المعينة قبل التنفيذ النهائى بالضغط على applay

أضفت على الكلاس الثانى السطور هذه و لكنها غير نافعة و أسعى لتظبيطها أيضاً :

 public void actionPerformed(ActionEvent e) {
		boldItalic(e);
	}

	private void boldItalic(ActionEvent e) {
		if(e.getSource()==fontNames[0]){
			Bold(e);
		}
	}

	private void Bold(ActionEvent e) {
			sampleLabel.setFont(fontStyle[0]);
	}

على فكرة الكلاس الثانى أصبح بي implements actionlistenr

أتمنى تشاركونا

شكراً

بيشوى عاطف

#60

يا بيشوي يا حبيبي

ارفع الملفات في المرفقات

وذلك لزوم الكسالى أمثالي

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#61

سلام مستر علاء

كيفك ؟

أنا اتعقدت بصراحة من جزئية انى اعمل معينة على الخط قبل ما يُستخدم نهائياً

ياريت تساعدنى و أنا شغال فيها

و هذا رابط حمل منه الكود و شغله عندك يا عم

http://www.4shared.com/file/119935292/f195...dProcessor.html

سلام

#62

السلام عليكم

اه يا عم الحج

حليتلك المشكلتين الي عندك

أي حاجة أنا جاهز بس كالعادة ارفعهم ملفات

وياريت يا باشا ترفعهم كمرفق attachment هنا في المنتدى مش على موقع زي ما عملت المرة دي

تحياتي

word_processor.rar

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#63

و بعد ساعات على مدار يومين و بشد فى شعرى و أقرا و اطبق و كلها تجارب فاشلة

نجد و الأخ علاء كشف لنا سرٌ غائب عن فكرنا البسيط

و لكن ترك لنا باقى الموضوع حتى يكتمل شد شعرى الباقى :lol:

القصة انى عندما نفذت الكود و قولت خلاص هيعمل معاينة على كلمة test اكتشفت ان لازم نعمل action على كل عنصر موجود فى ال comboBoxs

فماذا فعلنا يا تُرى ؟!

فعلنا ذاك و لكنها غير صائبة ( أضافت سطرين فقط على الدالة actionPerformed الموجودة فى ال class fontClass ) :

public void actionPerformed(ActionEvent e) {
		String newFontName = (String) comboBoxFont.getSelectedItem();
		int newFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
		int newFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
		if (e.getSource() == comboBoxFont || e.getSource() == comboBoxFontstyle || e.getSource() == comboBoxFontSize) {
			sampleLabel.setFont(new Font(newFontName, newFontStyle, newFontSize));
		}
	}

و بعد الإضافة هذه أيضاً لم تؤثر ... ممكن نعرف الصح ؟؟ :cry:

-------------------------------------------------------------------------------------------------

و اعتذر عن رفعى الملفات على موقع ال 4shared لم أكن أعرف انه هذا خطأ ....

و لكن على ايه حال متزعلش يا كابتن سارفع من هنا المرات القادمة وهى كثيرة جداً :lol: و السبب فى رفع على ذاك انى لم أجد من أين أرفع هنا فقط لا غير

شكراً

بيشوى عاطف

تم تعديل هذه المشاركة بواسطة mr.beshoy في 24 يوليو 2009 في 02:07

#64

يا بيشوي باشا

الحدث الخاص بـ comboBoxs شيء آخر

اسمه ItemListener ويتم إضافته عن طريق الدالة comboBoxFont.addItemListener

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#65

اهدى على يا علاء

أنا مازلت ضعيف ... طول بالك

هناك مشكلتان :

قررت أن استعمل ال ItemListener

class FontClass extends JDialog implements ItemListener

و استبدلنا الدالة actionPerformed

بهذه :

public void itemStateChanged(ItemEvent e) {
//		String newFontName = (String) comboBoxFont.getSelectedItem();
//		int newFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
//		int newFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
//		if (e.getSource() == comboBoxFont || e.getSource() == comboBoxFontstyle || e.getSource() == comboBoxFontSize) {
//			sampleLabel.setFont(new Font(newFontName, newFontStyle, newFontSize));
//
//		}

و لكن لا يوجد أى تأثير إطلاقاً لماذا ؟؟؟

فلجأت لعمل ذاك :

		comboBoxFont.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				String newFontName = (String) comboBoxFont.getSelectedItem();
				sampleLabel.setFont(new Font(newFontName, WIDTH, WIDTH));
			}
		});
		comboBoxFontstyle.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				int newFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
				sampleLabel.setFont(new Font(null, newFontStyle, WIDTH));
			}
		});
		comboBoxFontSize.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				int newFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
				sampleLabel.setFont(new Font(null, WIDTH, newFontSize));
			}
		});

ال كومبوبوكس الخاص بال font و ال style بتاعه

أول ما أضغط على أى Item

تختفى كلمة test من على ال label لماذا ؟؟

و لكن عندما أضغط على حجم الخط

تكبر الكلمة طبقاً للمقاس

و لكن عندما أصل للمقاس 28 يعطى NumberFormatedException

و لكنه يعمل و يكبر إلى آخر المقاسات ..... و لكن لماذا هذا ال exception

الشفيرة كاملة للكلاس fontClass

---------------------------------------

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

class FontClass extends JDialog {

	Box mainComBoxPanel = Box.createHorizontalBox();
	JPanel comfontpanel, comfontstaylePanel, comsizeFontpanel, mainSamplePanel, samplePanel, mainPanel, applayPanel, mainApplayPanel;
	JLabel labelFont, labelFontstyle, labelSize, sampleLabel;
	TitledBorder titleSample, fontProperties;
	JComboBox comboBoxFont, comboBoxFontstyle, comboBoxFontSize;
	JButton applayButton, canelButton;
	String[] font;
	int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
	String[] fontNames = {"Bold", "Italic", "BoldItalic"};
	String[] sizeFont = {"20", "22", "24", "26", " 28", "36", "48", "72"};

	public FontClass() {
		font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
		comboBoxFont = new JComboBox(font);
		IntializePanel();
		IntializeLapel();
		//applay panel contain ok & applay buttons
		applayPanel.setLayout(new GridLayout(2, 1));
		applayButton = new JButton("applay");
		canelButton = new JButton("cancel");
		applayPanel.add(applayButton);
		applayPanel.add(canelButton);
		mainApplayPanel.setBackground(Color.BLUE);
		mainApplayPanel.add(applayPanel);
		// panels for comboBox
		comfontpanel.setLayout(new GridLayout(2, 1));
		comfontstaylePanel.setLayout(new GridLayout(2, 1));
		comsizeFontpanel.setLayout(new GridLayout(2, 1));
		// sampel panel for previewing font properties
		titleSample = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 3), "sample");
		samplePanel.setBorder(titleSample);
		sampleLabel.setText("Test");
		samplePanel.setBackground(Color.BLUE);
		samplePanel.add(sampleLabel);

		comboBoxFontstyle = new JComboBox();
		for (int i = 0; i < fontStyle.length; ++i) {
			comboBoxFontstyle.addItem(fontNames);
		}

		comboBoxFontSize = new JComboBox();
		for (int i = 0; i < sizeFont.length; ++i) {
			comboBoxFontSize.addItem(sizeFont);
		}
		comfontpanel.add(labelFont);
		comfontpanel.add(comboBoxFont);
		comfontstaylePanel.add(labelFontstyle);
		comfontstaylePanel.add(comboBoxFontstyle);
		comsizeFontpanel.add(labelSize);
		comsizeFontpanel.add(comboBoxFontSize);
		comfontpanel.setPreferredSize(new Dimension(40, 40));
		comfontstaylePanel.setPreferredSize(new Dimension(40, 40));
		comsizeFontpanel.setPreferredSize(new Dimension(40, 40));

		fontProperties = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 5), "Font properties");
		mainComBoxPanel.setBorder(fontProperties);

		mainComBoxPanel.add(comfontpanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comfontstaylePanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comsizeFontpanel);
		mainComBoxPanel.add(Box.createHorizontalGlue());

		samplePanel.setPreferredSize(new Dimension(200, 100));
		mainSamplePanel.add(samplePanel);

		mainPanel.setLayout(new BorderLayout());
		mainPanel.add(mainComBoxPanel, BorderLayout.NORTH);
		mainPanel.add(mainSamplePanel, BorderLayout.SOUTH);
		mainPanel.add(mainApplayPanel, BorderLayout.EAST);
		getContentPane().add(mainPanel);

		comboBoxFont.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				String newFontName = (String) comboBoxFont.getSelectedItem();
				sampleLabel.setFont(new Font(newFontName, WIDTH, WIDTH));
			}
		});
		comboBoxFontstyle.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				int newFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
				sampleLabel.setFont(new Font(null, newFontStyle, WIDTH));
			}
		});
		comboBoxFontSize.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				int newFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
				sampleLabel.setFont(new Font(null, WIDTH, newFontSize));
			}
		});


	}

	private void IntializePanel() {
		mainPanel = new JPanel();
		comfontpanel = new JPanel();
		comfontstaylePanel = new JPanel();
		comsizeFontpanel = new JPanel();
		mainSamplePanel = new JPanel();
		samplePanel = new JPanel();
		mainApplayPanel = new JPanel();
		applayPanel = new JPanel();
	}

	private void IntializeLapel() {
		labelFont = new JLabel("Font:");
		labelFontstyle = new JLabel("Font Style:");
		labelSize = new JLabel("Size:");
		sampleLabel = new JLabel("Test");

	}
//	public void itemStateChanged(ItemEvent e) {
//		String newFontName = (String) comboBoxFont.getSelectedItem();
//		int newFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
//		int newFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
//		if (e.getSource() == comboBoxFont || e.getSource() == comboBoxFontstyle || e.getSource() == comboBoxFontSize) {
//			sampleLabel.setFont(new Font(newFontName, newFontStyle, newFontSize));
//
//		}
}

و استحملنى ياعلاء حاسس صبرك بدأ ينفذ منى

أنتم أساتذة لابد من الصبر لطلابكم الضعفاء :(

منتظر أفكاركم السليمة و جارى المحاولات أيضاً

سلام

تم تعديل هذه المشاركة بواسطة mr.beshoy في 24 يوليو 2009 في 16:21

#66

new FontClass().setSize(new Dimension(500, 250));
new FontClass().pack();
new FontClass().setLocationRelativeTo(null);
 new FontClass().setVisible(true);

ركز يا سيد عاطف

في هذه السطور التي كتبت أنت تنشئ أربع كائنات FontClass وليس واحدا فقط، يعني setVisible ستنطبق على الأول و setSize ستنطبق على الثاني الذي هو مستقل عن الأول وهو لا يظهر مع الإثنين الآخرين لأن setVisible تنطبق على الأول فقط

بالنسبة لوضع نافذة الخظوظ وسط النافذة الأم فيجب أن تغير null بالنافذة الأم في الميثود setLocationRelativeTo


if (e.getSource() == formatMenuItems[0]) {
FontClass fontDlg = new FontClass();
fontDlg.setSize(new Dimension(500, 300));
fontDlg.setLocationRelativeTo(this);
fontDlg.setVisible(true);
/*new FontClass().setVisible(true);
new FontClass().setSize(new Dimension(500, 250));
new FontClass().pack();
new FontClass().setLocationRelativeTo(null);*/
}
}
private void fontProperties(ActionEvent e) {

بالنسبة لما كتبته في الItemlistener فأغلبه لا معنى له، ويجب أن تراجع قليلا توثيق الكلاس Font

http://java.sun.com/javase/6/docs/api/java/awt/Font.html

#67

بعد إذنك

مش قادرأفهمك كويس هنا :

اقتباس
يعني setVisible ستنطبق على الأول و setSize ستنطبق على الثاني الذي هو مستقل عن الأول وهو لا يظهر مع الإثنين الآخرين لأن setVisible تنطبق على الأول فقط

بتقول ستنطبق على الأول أيه الأول و تنطبق أزاى

وضح معلش شوية ...

بالنسبة لل itemListener

مالها ؟؟

ايه العيب فى الكلام ده

omboBoxFont.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				String newFontName = (String) comboBoxFont.getSelectedItem();
				sampleLabel.setFont(new Font(newFontName, WIDTH, WIDTH));
			}
		});
		comboBoxFontstyle.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				int newFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
				sampleLabel.setFont(new Font(null, newFontStyle, WIDTH));
			}
		});
		comboBoxFontSize.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				int newFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
				sampleLabel.setFont(new Font(null, WIDTH, newFontSize));
			}
		});
#68

أنا أتكلم عن الكود داخل الItemListener وليس الItemListener نفسه، وإذا قرأت توثيق الكلاس Font ستعرف ما هي الأخطاء

------------

عندما تستعمل new فإنك تنشئ object في الذاكرة

أنت قمت أربع مرات بnew FontClass يعني أنشأت أربع Objects من صنف FontClass في الذاكرة وكل واحد مستقل على الآخر، فعندما تنادي على ميثود في واحد من هذه الobjects فإن تأثيرها لا ينطبق على الآخرين وبالتالي فإن setVisible سينطبق على واحد، وsetSize سينطبق على object آخر، لذلك لم يكن حجم نافذة الخطوط يتغير رغم setSize

#69

شكراً للتوضيح مستر عصام

و سأرى التوثيق

رغم انى قرأت من مصادر و مقالات أُخر

لكن نرى هذا أيضاً

شكراً

رجاء احتملنى و لا تمل منى

سلام

#70

اتحلت المشكلة ياأحبائى :

السبب هو أنى لم أكن أفعل ذاك :

كنت أستعمل ال :

omboBoxFont.addItemListener(new ItemListener() {

			public void itemStateChanged(ItemEvent e) {
				String newFontName = (String) comboBoxFont.getSelectedItem();
				sampleLabel.setFont(new Font(newFontName, WIDTH, WIDTH));
			}
		});

و لا أُكمل اللعبة و أكتب هذا السطر الذى يقوك بعملية الأكشن على الأحداث

  comboBoxFont.addItemListener(itemlistener);

فأترك لكم شفيرة ال fontClass كاملة و شغلوها و تمتعوا بها : :lol:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.TitledBorder;

class FontClass extends JDialog {

	Box mainComBoxPanel = Box.createHorizontalBox();
	JPanel comfontpanel, comfontstaylePanel, comsizeFontpanel, mainSamplePanel, samplePanel, mainPanel, applayPanel, mainApplayPanel;
	JLabel labelFont, labelFontstyle, labelSize, sampleLabel;
	TitledBorder titleSample, fontProperties;
	JComboBox comboBoxFont, comboBoxFontstyle, comboBoxFontSize;
	JButton applayButton, canelButton;
	String[] font;
	int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
	String[] fontNames = {"Bold", "Italic", "BoldItalic"};
	String[] sizeFont = {"20", "22", "24", "26", "28", "36", "48", "72"};

	public FontClass() {
		font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
		comboBoxFont = new JComboBox(font);
		IntializePanel();
		IntializeLapel();
		//applay panel contain ok & applay buttons
		applayPanel.setLayout(new GridLayout(2, 1));
		applayButton = new JButton("applay");
		canelButton = new JButton("cancel");
		applayPanel.add(applayButton);
		applayPanel.add(canelButton);
		mainApplayPanel.setBackground(Color.BLUE);
		mainApplayPanel.add(applayPanel);
		// panels for comboBox
		comfontpanel.setLayout(new GridLayout(2, 1));
		comfontstaylePanel.setLayout(new GridLayout(2, 1));
		comsizeFontpanel.setLayout(new GridLayout(2, 1));
		// sampel panel for previewing font properties
		titleSample = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 3), "sample");
		samplePanel.setBorder(titleSample);
		sampleLabel.setText("Test");
		samplePanel.setBackground(Color.BLUE);
		samplePanel.add(sampleLabel);

		comboBoxFontstyle = new JComboBox();
		for (int i = 0; i < fontStyle.length; ++i) {
			comboBoxFontstyle.addItem(fontNames);
		}

		comboBoxFontSize = new JComboBox();
		for (int i = 0; i < sizeFont.length; ++i) {
			comboBoxFontSize.addItem(sizeFont);
		}
		comfontpanel.add(labelFont);
		comfontpanel.add(comboBoxFont);
		comfontstaylePanel.add(labelFontstyle);
		comfontstaylePanel.add(comboBoxFontstyle);
		comsizeFontpanel.add(labelSize);
		comsizeFontpanel.add(comboBoxFontSize);
		comfontpanel.setPreferredSize(new Dimension(40, 40));
		comfontstaylePanel.setPreferredSize(new Dimension(40, 40));
		comsizeFontpanel.setPreferredSize(new Dimension(40, 40));

		fontProperties = BorderFactory.createTitledBorder(BorderFactory.createLineBorder(Color.BLACK, 5), "Font properties");
		mainComBoxPanel.setBorder(fontProperties);

		mainComBoxPanel.add(comfontpanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comfontstaylePanel);
		mainComBoxPanel.add(Box.createHorizontalStrut(10));

		mainComBoxPanel.add(comsizeFontpanel);
		mainComBoxPanel.add(Box.createHorizontalGlue());

		samplePanel.setPreferredSize(new Dimension(200, 100));
		mainSamplePanel.add(samplePanel);

		mainPanel.setLayout(new BorderLayout());
		mainPanel.add(mainComBoxPanel, BorderLayout.NORTH);
		mainPanel.add(mainSamplePanel, BorderLayout.SOUTH);
		mainPanel.add(mainApplayPanel, BorderLayout.EAST);
		getContentPane().add(mainPanel);

//		ItemListener itemlistener = new ItemListener() {
//
//			public void itemStateChanged(ItemEvent e) {
//				try {
//					String selectedFontName = (String) comboBoxFont.getSelectedItem();
//					int selectedFontStyle = fontStyle[comboBoxFontstyle.getSelectedIndex()];
//					int selectedFontSize = Integer.parseInt((String) comboBoxFontSize.getSelectedItem());
//					sampleLabel.setFont(new Font(selectedFontName, selectedFontStyle, selectedFontSize));
//				} catch (NumberFormatException exc) {
//					exc.printStackTrace();
//				}
//			}
//		};
//		comboBoxFont.addItemListener(itemlistener);
//		comboBoxFontstyle.addItemListener(itemlistener);
//		comboBoxFontSize.addItemListener(itemlistener);
	}

	private void IntializePanel() {
		mainPanel = new JPanel();
		comfontpanel = new JPanel();
		comfontstaylePanel = new JPanel();
		comsizeFontpanel = new JPanel();
		mainSamplePanel = new JPanel();
		samplePanel = new JPanel();
		mainApplayPanel = new JPanel();
		applayPanel = new JPanel();
	}

	private void IntializeLapel() {
		labelFont = new JLabel("Font:");
		labelFontstyle = new JLabel("Font Style:");
		labelSize = new JLabel("Size:");
		sampleLabel = new JLabel("Test");

	}

	public static void main(String[] args) {
		FontClass fontClass = new FontClass();
		fontClass.setSize(new Dimension(500, 400));
		fontClass.setLocationRelativeTo(null);
		fontClass.setVisible(true);
		fontClass.setResizable(false);
	}
}

السطور التى أمامها كومنت هى الى تقوم بعمل معاينة الخط على كلمة Test قبل استعماله نهائياً

#71

و هذا ملف مرفق به الكود كاملاً إلى أن وصلنا

قربا نخلص هانت خلاص

باقى خواص قليلة سأضيفها

و ننتهى منه

---------------------------------

طبعاً أشكر تعب مستر علاء و مستر عصام

و ربنا يعوضهم

لكن الى نفسى اعرفه من مستر عصام أن كان له طريقة أخرى أتمنى يقولها و يكتبها لنا حتى نستفيد منها

لأنك سابقاً قولت ما بداخل ال itemlistener من كود

ما له معنى

رجاء التوضيح و إفادتنا

شكراً كثيراً

بيشوى عاطف

Text.rar

#72

مثال ممكن يساعدك


import java.awt.*;
import java.awt.event.*;

public class FontsDlg extends JDialog {

private JComboBox fontsCombo, sizeCombo, stylesFontCombo;
private JTextField txtSample;
private JButton btnOk, btnCancel;
private String fonts[];
private Font actualFont;
private Box bx, bxButtons, center, bxMain;
private int x, y, w, h, fontStyle = Font.PLAIN;

public FontsDlg() {
w = 400;
h = 400;
x = ((int) Toolkit.getDefaultToolkit().getScreenSize().getWidth() - w) / 2;
y = ((int) Toolkit.getDefaultToolkit().getScreenSize().getHeight() - h) / 2;

fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

createCombos();

bx = Box.createHorizontalBox();
bx.add(Box.createHorizontalStrut(5));
bx.add(fontsCombo);
bx.add(Box.createHorizontalStrut(5));
bx.add(stylesFontCombo);
bx.add(Box.createHorizontalStrut(5));
bx.add(sizeCombo);
bx.add(Box.createHorizontalStrut(5));


center = Box.createHorizontalBox();
txtSample = new JTextField();
txtSample.setText("Sample");
txtSample.setEditable(false);
center.add(Box.createHorizontalStrut(10));
center.add(txtSample);
center.add(Box.createHorizontalStrut(10));

bxButtons = Box.createHorizontalBox();
btnOk = new JButton("Ok");
btnOk.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent ae) {
dispose();
}
});
bxButtons.add(Box.createHorizontalGlue());
bxButtons.add(btnOk);
bxButtons.add(Box.createHorizontalGlue());

bxMain = Box.createVerticalBox();
bxMain.add(bx);
bxMain.add(Box.createVerticalStrut(10));
bxMain.add(center);
bxMain.add(Box.createVerticalStrut(10));
bxMain.add(bxButtons);
bxMain.add(Box.createVerticalStrut(10));
add(bxMain);
setTitle("Fonts");
setModal(true);
setBounds(x, y, w, h);
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
setVisible(true);
}

private void createCombos() {
String[] stylesFont = {"bold", "italic", "normal"};
fontsCombo = new JComboBox(fonts);
fontsCombo.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
int size = Integer.parseInt(sizeCombo.getSelectedItem().toString());
actualFont = new Font(fontsCombo.getSelectedItem().toString(), fontStyle, size);
txtSample.setFont(actualFont);
}
}
});
sizeCombo = new JComboBox();
fillComboSize();
sizeCombo.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
float size = Float.parseFloat(sizeCombo.getSelectedItem().toString());
actualFont = actualFont.deriveFont(size);
txtSample.setFont(actualFont);
}
}
});
stylesFontCombo = new JComboBox(stylesFont);
stylesFontCombo.addItemListener(new ItemListener() {

public void itemStateChanged(ItemEvent ie) {
if (ie.getStateChange() == ItemEvent.SELECTED) {
int st = stylesFontCombo.getSelectedIndex();
if (st == 0) {
actualFont = actualFont.deriveFont(Font.BOLD);
fontStyle = Font.BOLD;
} else if (st == 1) {
actualFont = actualFont.deriveFont(Font.ITALIC);
fontStyle = Font.ITALIC;
} else if (st == 2) {
actualFont = actualFont.deriveFont(Font.PLAIN);
fontStyle = Font.PLAIN;
}
txtSample.setFont(actualFont);
}
}
});
}
private void fillComboSize() {
for (int i = 6; i < 70; i++) {
sizeCombo.addItem(i);
}
}

public static void main(String[] args) {
new FontsDlg();
}
}
import javax.swing.*;

تم تعديل هذه المشاركة بواسطة herch في 25 يوليو 2009 في 19:22

#73

عصام حتى الدالة deriveFont تقوم بعمل كائن جديد كل مرة

وضح ما تعنيه أكثر

لأنه حتى أنا التبس علي الأمر

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#74

شكراً مستر عصام حقاً استفدت من كودك

و لكن مستر علاء ماذا تقصد بكلمة (( تقوم بعمل كائن جديد ))

الدالة driveFont();

تأخذ بعض من ال prametars

ممكن تأخذ int

أو float

أو int & float

كما نرى بال documentation

معلش ياعصام انا لم أنظر لتلك الدالة على الإطلاق

قرأت ماقبله و كسلت أُكمل :lol:

post-166855-1248595141_thumb.png

#75

أعلم أن deriveFont تعيد كائن جديد، لكن يكون له نفس خصائص الكائن Font الذي نادى على الميثود،مع تغيير فقط الخاصية التي تحددها، إما حجم الخط أو الstyle أو هما معا

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…