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

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

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

يا سي عاطف ركز معي، صباعي تقشرت من كثر الكتابة :lol: :lol: :lol: أمزح فقط

النسخ يعني أنك تكتب في الclipboard، ليس أنك تقراه

واللصق أنك تقرى محتواه ثم تكتبه أين تريد، وفي حالتك في الJTextArea

الكود الذي أعطيتك مثال فقط على طريقة الإستعمال، لا تستعمله كما هو

وهذا مثال باستعمال JTextArea


import java.awt.event.*;
import java.awt.datatransfer.*;
import java.io.IOException;
import java.awt.Toolkit;

public class CopyExample {

JFrame frm = new JFrame();
JTextArea txtArea = new JTextArea();
JMenuBar bar = new JMenuBar();
JMenu mnActions = new JMenu("Actions");
JMenuItem mnItmCopy = new JMenuItem("Copy to the clipboard");
JMenuItem mnItmCut = new JMenuItem("Cut to the clipboard");
JMenuItem mnItmPaste = new JMenuItem("Paste from the clipboard");
Clipboard clib = Toolkit.getDefaultToolkit().getSystemClipboard();

public CopyExample() {
mnActions.add(mnItmCopy);
mnActions.add(mnItmCut);
mnActions.add(mnItmPaste);
bar.add(mnActions);

mnItmCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
clib.setContents(new StringSelection(txtArea.getSelectedText()),null);
}
});
mnItmCut.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
clib.setContents(new StringSelection(txtArea.getSelectedText()),null);
txtArea.replaceSelection("");
}
});
mnItmPaste.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
Transferable t = clib.getContents(null);
try{
String clibContent = t.getTransferData(DataFlavor.stringFlavor).toString();
txtArea.insert(clibContent, txtArea.getCaretPosition());
} catch(UnsupportedFlavorException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();
}
}
});

frm.setJMenuBar(bar);
frm.add(txtArea);
frm.setSize(400, 400);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}

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

إقرأ الكود جيدا بعد أن تكون شربت فنجانين قهوة ، ولما تفهمه إبعث لي أتعابي على حسابي البنكي :cash:

#27

حقيقى أنا لسة فاهمها كويس

أنا كنت ملغبط فيها

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

سامحنى بقى ..... و أدينا كلنا بنتعلم و بنستفيد

و شكراً لتعبك معنا أخ عصام

بيشووى عاطف

#28

لما تكمل برنامجك وتبيعه بآلاف الدولارات، إبعث لي نصيبي وإلا :angry:

#29

يا أخى اسكت أبيع أيه و لا أيه ده الواحد بيكتب سطر كود بالعافية :angry:

_____________________________________________________

بعد محاولة مع الأخت Undo الى طلعت عينى و قرأت من التيتوريل و جمعت الفكرة و كتبتها لما تُنتج ياريت بقى تدلونى .... ما هو أنا هفضل وراكم لغاية ما اتعلم كويس و خلال الصيف ده .....

بصوا انا هضع الشفيرة كاملة كلها من أول سطر لآخر سطر و أمام الأسطر الخاصة بعمل ال undo سأضع كومنت (( أقصد به ده الجزء الى جد جديد على الكود ))

لا تتعبوا أنفسكم سوى فى النظر للسطور التى أمامها كومنت

بصراحة كده حاولت افهم ايه المقصود بالكلاس AbstractDocument

لم أستطع ياريت توضحولى القصة و تظبطوا معايا المشاكل دى

اه صحيح و كمان لما بعمل run بيعطينى nullPointerException

على السطر ده

doc.addUndoableEditListener(new myUndoableListener());

رجاء محدش يتخنق منى (( صيفكم معايا زى الفل :haha:

/**
 *
 * @author beshoyatef
 */
import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.event.UndoableEditEvent;
import javax.swing.event.UndoableEditListener;
import javax.swing.text.AbstractDocument;
import javax.swing.undo.CannotUndoException;
import javax.swing.undo.UndoManager;

public class WordProcessor 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 ImageIcon[] imagicons;
	private JButton[] buttons;
	private JMenu menu;
	private JMenuBar bar, barIcon;
	private JTextArea area;
	private JFileChooser fc;
	private Clipboard clib = Toolkit.getDefaultToolkit().getSystemClipboard();
//	protected AbstractDocument doc;
//	protected UndoManager undo = new UndoManager();
//	protected UndoAction undoAction;
//   

	public WordProcessor() {
		area = new JTextArea();
		getContentPane().add(area);
		intializeMenuBar();
		intializeMenuItems();
		intializeIcons();

//   doc.addUndoableEditListener(new myUndoableListener());
	}

	public static void main(String[] args) {
		WordProcessor fram = new WordProcessor();
		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.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);
		copyCutPasteUndotText(e);
	}

	private void openFileDialog(ActionEvent e) {
		if (e.getSource() == fileMenuItems[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]) {
			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 copyCutPasteUndotText(ActionEvent e) {
		if (e.getSource() == editMenuItems[1]) {
			// area.cut();
			clib.setContents(new StringSelection(area.getSelectedText()), null);
			area.replaceSelection("");
		}
		if (e.getSource() == editMenuItems[2]) {
			// area.copy();
			clib.setContents(new StringSelection(area.getSelectedText()), null);
		}
		if (e.getSource() == editMenuItems[3]) {
			// 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("");
		}

	}

//	protected class myUndoableListener implements UndoableEditListener {
//
//		public void undoableEditHappened(UndoableEditEvent e) {
//			undo.addEdit(e.getEdit());
//			undoAction.updateUndoState();
//		}
//	}
//
//	protected class UndoAction extends AbstractAction {
//
//		public void actionPerformed(ActionEvent e) {
//			if (e.getSource() == editMenuItems[0]) {
//				try {
//					undo.undo();
//				} catch (CannotUndoException ex) {
//					ex.printStackTrace();
//				}
//				updateUndoState();
//			}
//
//		}
//
//		private void updateUndoState() {
//			if (undo.canUndo()) {
//				setEnabled(true);
//				putValue(Action.NAME, undo.getUndoPresentationName());
//			} else {
//				setEnabled(false);
//				putValue(Action.NAME, "undo");
//			}
//		}
//	}
}

طبعاً الكومنت الى أمام area .cut ()

area.paste()

area.copy()

مش هى التى اقصدها

سلام انا تعبت جدا الليلة دى

#30

بالتسبة لهذا السطر اللذي يعطيك NullPointerException، فهذا طبيعي، لأنك لم تعط للمتغير doc أي قيمة، فبالتالي هو يساوي null

ركز معنا يا سي عاطف :mad: واشرب لك فنجانين نيسكافي

مثال بسيط وواضح

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

#31

يا مستر عصام على مهلك عليَّ أنا على قدى ياعم

عرفتها و فهمتها

________________________________

بالنسبة لل nullpointerexception انا عاف انى مكنتش عامل intialization لل doc

لما جيت عملتلوه intializtion راح نفذ دول كتير خاصة بال abstractDocument

________________________________________________________________

عموماً أدى الشفيرة بعد التعديل

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

دلقوتى هشوف موضوع ال font من ناحية حجمه و نوعه و اسمه

و ربنا يستر :rolleyes:

سلام

#32

مساء الخير للجميع ... أيش أخباركم ؟؟

معلش كان ليا يومين مش بشتغل مكنتش فى المزاج لكن نشكر ربنا دلوقتى ....

__________________________________________

كان عندى تساؤل بسيط معلش

فى برنامج ال noteBad الى فى الوندوز

لما بنضغ على format >> font

بيظهر dialog يحتوعى على اسم الخط و نوعه و حجمه على ال dilod ده ليه اسم فى الجافا زى JFileChooser & saveFileDialog

معلش هو سوال مش و لابد

#33

لا، لازم تنجزه بنفسك

يوجد كلاسات للإستعمال ممكن تبحث عنها في google وتحملها إذا كنت تريد حل جاهز

#34

لا ياعم ننجزه بنفسنا أحنا أقل منها و لا أيه ؟؟؟!! :lol:

بس تقصد بكلاسات جاهزة يعنى مشاريع عملينها ناس آخرين و لا كلاسات من الجافا نفسها زى كلاس Font ???

سوال : يعنى أنا الى هعول القائمة الخاصة بالحجم و النوع و الإسم و أضعهم فى dilog واحد تقصد كده ؟؟؟؟؟

شكرا مستر عصام ..

سلام

بيشوى

#35

أعنى مشاريع عملينها ناس آخرين

نعم، تستعمل JDialog وتضع الكل فيه

وإذا كنت تتساءل كيف تحصل على الخطوط الموجودة على جهازك، فهذه هي الطريقة


JComboBox comboFonts = new JComboBox(fonts);
String[] fonts = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();

comboFonts هي القائمة اللتي ستحتوي على الخطوط

#36

سلام

سوالى المرة دى خاص فى شئ فى تصميم ال GUI

ستجدون فى الشفيرة هذا السطر

 comfontpanel.setLayout(new GridLayout(2, 0));

أمامه كومنت

بدون هذا السطر يُعرض ال label و ال compoBox

بطريقة ملائمة جدا جدا

و لكن عندما أحذف من أمامه الكومنت يكون ال label و ال comment فى ملئ ال Dilog بالكامل

لماذا ؟؟؟ و ما حل هذه امشكلة الفنية ؟؟؟

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

_________

import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FontDilogTest extends JDialog {

	JPanel comfontpanel = new JPanel();
	JLabel labelFont = new JLabel("Font:");
	JComboBox comboBox;
	String[] font;

	public FontDilogTest() {
	//	comfontpanel.setLayout(new GridLayout(2, 0));
		font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
		comboBox = new JComboBox(font);
		comfontpanel.add(labelFont);
		comfontpanel.add(comboBox);
		getContentPane().add(comfontpanel);
	}

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

شكراً

بيشوى عاطف

#37

بعد تتبع بسيط للشيفرة الخاصة بـ JPanel

فهي تضع مدير المحتوى LayoutManager المسمى FlowLayout

وسلوكه هو ما تراه بدون أن تستخدم الدالة setLayout

أما وقد وضعها فسيصبح لديك GridLayout

وأظن ما حصل بعد أن غيرنا مدير المحتوى

مفهوم لديك

تحياتي

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

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

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

728x90.png

#38

أولا بما أنك تريد وضع المكونات في سطر واحد، فيجب أن تفعل كالتالي

new GridLayout(1, 2)

لأن الparameter الأول يمثل عدد الأسطر، والثاني عدد الأعمدة

بالنسبة للمكونات التي يتم تنسيقها بواسطة الGridLayout فإنها تملأ كل المساحة المتوفرة، لذلك فما تحصل عليه عادي

وكما قال الأخ علاء، فالalyout manager المستعمل في JPanel هو FlowLayout إذا لم تحدد أي واحد

إذا كنت تريد الإستمرار في استعمال GridLayout في الJPanel، فاستعمل أيضا BorderLayout في الJDialog


import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
//#######################
import java.awt.BorderLayout;
//#######################
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FontDilogTest extends JDialog {

JPanel comfontpanel = new JPanel();
JLabel labelFont = new JLabel("Font:");
JComboBox comboBox;
String[] font;

public FontDilogTest() {
//#######################
comfontpanel.setLayout(new GridLayout(1, 2));
//#######################
font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
comboBox = new JComboBox(font);
comfontpanel.add(labelFont);
comfontpanel.add(comboBox);
//#######################
getContentPane().add(comfontpanel, BorderLayout.NORTH);
//#######################
}

public static void main(String[] args) {
FontDilogTest f = new FontDilogTest();
f.setVisible(true);
f.setLocationRelativeTo(null);
f.setSize(new Dimension(500, 250));
}
}
import java.awt.Dimension;

#39

شكراً يا شباب

انا مكنتش على بالى انى أضيف ال Borderlayout.north

بس المشكلة ان الأخ

comboBox واخد عرض الشاشة كله كما بالصورة :

>

هل ممكن احجم حجم ال comboBox

انا كتبت كده و مع ذلك لم يتغير حجمه لماذا

comboBox.setSize(10,5);

معلش استحلوا اسئلتى

بيشوى

#40

كما قلت سابقا

اقتباس
بالنسبة للمكونات التي يتم تنسيقها بواسطة الGridLayout فإنها تملأ كل المساحة المتوفرة

إستعمل الكلاس Box بدل JPanel لأنها تستعمل BoxLayout وتتيح تحكم أكبر في المساحة المشغولة

تم تعديل هذه المشاركة بواسطة herch في 17 يوليو 2009 في 14:54

#41

ليتك تحميل الصورة لأنه مكنش بيفتح معايا

معلش

هتلاقوها فى المرفقات

معلش على الإزعاج

و شكلى هتعبكم فى موضوع ال font و انا شغال فيه دلوقتى

سلام

post-166855-1247831736_thumb.gif

#42
herch كتب:

كما قلت سابقا

بالنسبة للمكونات التي يتم تنسيقها بواسطة الGridLayout فإنها تملأ كل المساحة المتوفرة

إستعمل الكلاس Box بدل JPanel لأنها تستعمل BoxLayout وتتيح تحكم أكبر في المساحة المشغولة

ولما تريد تغيير ردك، قم فقط بتحريره، لا تضف ردا جديدا

تم تعديل هذه المشاركة بواسطة herch في 17 يوليو 2009 في 15:05

#43

معلش بجد

أنا لما وضعت المشاركة الأخيرة مكنتش قرأت ردك الى قبل الأخير

أسف بجد

و متزقش كده ياسى عصام :lol: :lol:

#44

أنا معك لحد أنت ما تزهق :wink:

#45

يبقى وقعت يا عصام وما حديش سمى عليك

أصل بيشوي باشا ما بيزهقش أبداً :lol:

تحياتي

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

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

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

728x90.png

#46

لا مشكل :wink:

عندي الوقت لكن لا أعرف كيف أشغله، فرصة أقضيه في شيء مفيد

تم تعديل هذه المشاركة بواسطة herch في 17 يوليو 2009 في 20:51

#47

سلام با بشاوات و يا مبرمجين يا حلوين

كيفك علاء ... كيفك عصام .... أنا نفسى طويل مش تقلقوا و لما بزهق بتمشى شوية و أجدد نشاطى و أبقى 10 \ 10 :lol:

المهم انتم الى تستحلومنى بجد هيجى منى منا إلى آخر الصيف ده ... أنا واثق

_____________________________________________________________________

نقلب على الجد بقى :

........................

بتقول يا كابتن عصام استعمل BOX بدلاً من JPanel

طيب أنا بحركة تجريب منى بدل ما أكتب كده :

 JPanel comfontpanel = new  JPanel();

كتبت :

Box comfontpanel = new  Box();

بيعترض ليش مش عارف على الرغم اننا ديما نعمل حركة زى دى مع أى كلاس

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

فقولت خلاص نخليها JPanel كما هى و نعمل كده

 mainComboBoxPanel.add(comfontpanel,BoxLayout.X_AXIS);
		mainComboBoxPanel.add(comfontstayle,BoxLayout.X_AXIS);

استعملنا BoxLayout كما ترون

و لكن لم يعمل resize for commponent

و الشفيرة كاملة بعد التعديل هستجدوا بعض الإضافات :

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

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class FontDilogTest extends JDialog {

	JPanel mainComboBoxPanel = new JPanel();
	JPanel comfontpanel = new  JPanel();
	JPanel comfontstayle = new JPanel();
	JLabel labelFont = new JLabel("Font:");
	JLabel labelFontstyle = new JLabel("Font Style:");
	JComboBox comboBox, comboBoxFontstyle;
	String[] font;
	int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
	String[] fontNames = {"Bold", "Italic", "BoldItalic"};

	public FontDilogTest() {
		mainComboBoxPanel.setLayout(new GridLayout(1, 3));
		comfontpanel.setLayout(new GridLayout(2, 1));
		comfontstayle.setLayout(new GridLayout(2, 1));

		font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
		comboBox = new JComboBox(font);
		comboBoxFontstyle = new JComboBox();
		for (int i = 0; i < fontStyle.length; ++i) {
			comboBoxFontstyle.addItem(fontNames);
		}
		//comboBox.setSize(10, 5);
		comfontpanel.add(labelFont);
		comfontpanel.add(comboBox);

		comfontstayle.add(labelFontstyle);
		comfontstayle.add(comboBoxFontstyle);

		mainComboBoxPanel.add(comfontpanel,BoxLayout.X_AXIS);
		mainComboBoxPanel.add(comfontstayle,BoxLayout.X_AXIS);

		getContentPane().add(mainComboBoxPanel, BorderLayout.NORTH);

	}

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

منا لبكرة بالكتير نكون انهينا المشروع ده مش هتحرك من أمام الجهاز اليوم كله بكرة عشان نشوف مغامرة جديدة هتنبسطوا معايا فيها :ph34r:

#48

للحصول على Box، استعمل Box.createHorizontalBox() أو Box.createVerticalBox()

الكلاس Box تحتوي على الميثود Box.createHorizontalStrut(x) و Box.createHorizontalStrut(x) التي تضيف فراغ بالحجم الذي تحدده

Box.createHorizontalGlue() تقوم بملء كل المساحة الفارغة المتوفرة وتمنع بالتالي المكونات الأخرى من أن تأخد أكثر من حقها

الكلاس Box تأخد بعين الإعتبار الحجم الذي تحدده بواسطة الميثود setPreferredSize(Dimension d) عكس بعض layoutmanager الأخرى

وهذا الكود المعدل ويستعمل الكلاس Box

ملاحظة أخيرة، إقرأ توثيق Sun، لأنك لو كنت قرأت الصفحة الخاصة بBox لكنت عرفت أنك لن تحصل عليها بواسطة new Box(...)


import java.awt.Dimension;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.Box;

public class FontDilogTest extends JDialog {

//#############################################
Box mainComboBox = Box.createHorizontalBox();
//#############################################
JPanel comfontpanel = new JPanel();
JPanel comfontstayle = new JPanel();
JLabel labelFont = new JLabel("Font:");
JLabel labelFontstyle = new JLabel("Font Style:");
JComboBox comboBox, comboBoxFontstyle;
String[] font;
int[] fontStyle = {Font.BOLD, Font.ITALIC, Font.BOLD | Font.ITALIC};
String[] fontNames = {"Bold", "Italic", "BoldItalic"};

public FontDilogTest() {
//mainComboBoxPanel.setLayout(new GridLayout(1, 3));
comfontpanel.setLayout(new GridLayout(2, 1));
comfontstayle.setLayout(new GridLayout(2, 1));

font = GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames();
comboBox = new JComboBox(font);
comboBoxFontstyle = new JComboBox();
for (int i = 0; i < fontStyle.length; ++i) {
comboBoxFontstyle.addItem(fontNames);
}
comfontpanel.add(labelFont);
comfontpanel.add(comboBox);

comfontstayle.add(labelFontstyle);
comfontstayle.add(comboBoxFontstyle);

//###########################################
comfontpanel.setPreferredSize(new Dimension(100, 40));
comfontstayle.setPreferredSize(new Dimension(40, 40));
//###########################################

mainComboBox.add(comfontpanel);
mainComboBox.add(Box.createHorizontalStrut(10));
mainComboBox.add(comfontstayle);
mainComboBox.add(Box.createHorizontalGlue());

getContentPane().add(mainComboBox, BorderLayout.NORTH);

}

public static void main(String[] args) {
FontDilogTest f = new FontDilogTest();
f.setVisible(true);
f.setLocationRelativeTo(null);
f.setSize(new Dimension(500, 250));
}
}
 import java.awt.BorderLayout;

تم تعديل هذه المشاركة بواسطة herch في 18 يوليو 2009 في 16:36

#49

شكراً ستر عصام

فى مشكلة عندى دلوقتى

أنا لما ضفت ال comboBox الخاصة بال size

كنمط السابقين لها

عملت بانل و وضعت عليها label "size" و comboBox

مش عاوز يظهر ال label خالص و قريت الكود كذا مرة و غيرت فى المسافات و كده و مع ذلك الlabel مش ظاهرة و حجم ال comboBox مش متساوى مع السابقين له

الشفيرة هكذا (( الإضافة الجديدة أمامها كومنت - هى التى تنظروا اليها ))

public class FontDilogTest extends JDialog {

	Box mainComboBoxPanel = Box.createHorizontalBox();
	JPanel comfontpanel, comfontstaylePanel, comsizeFontpanel;
	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));


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


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

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

//		mainComboBoxPanel.add(comboBoxFontSize);
//		mainComboBoxPanel.add(Box.createHorizontalGlue());

		getContentPane().add(mainComboBoxPanel, BorderLayout.NORTH);

	}

	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() {
		comfontpanel = new JPanel();
		comfontstaylePanel = new JPanel();
//		comsizeFontpanel = new JPanel();
	}

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

	}
}

شكراً

#50

sorry متأسف جداً

الخطأ كان عبيط جداً جداً

القصة انى كنت بضع فى البانل الرئيسية

كومبو بوكس فقط

   mainComboBoxPanel.add(comboBoxFontSize);

و لكن يتم تغير هذا السط بالسطر هذا :

	   mainComboBoxPanel.add(comsizeFontpanel);

فتتعدل الأحوال

:angry:

الواحد ليه سنة بيدور فين الغلط و طلع هو ده حاجة تفرس الواحد

معلش يا شباب استحملونى

سلام

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

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

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

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

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