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

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

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

سلام لكل أحبائى

________________

كيف حال المبرمجين ؟؟

أنا انقطعت عنكم فترة طويلة بسبب الإمتحانات المتعلقة بالترم الثانى فى سنة 3 حاسبات

و نشكر الرب انتهت تلك الأيام و نتمنى نذهب إلى السنة الرابعة و الأخيرة فى تعليمنا الجامعى

الرب يدبر كل خير

__________________________________________________________

كنت بدأت فى تصميم لعبة bomberman

و تركتها بسبب مشاريع الترم الكثيرة

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

و لكن قررت أن أعمل refresh لمخى بتصميم برنامج شبيه بالword مبسط جدا طبعا ً مش زى ال word بتاع مايركوسوفت

قبل أن استكمل اللعبة

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

________________________________________________________________________________

_____________

كعادت أتى لكم بمشكلة مملة

هنا المشكلة تكمن فى إن عندما أضغط على الmenuItem"open"

لا تظهر ال fileChooser

أترككم مع الشفيرة و نرى أرائكم:

_________________________

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JTextArea;

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 String[] editItems = {"undo", "cut", "copy", "past", "delete"};

private String[] formatItems = {"font"};

private String[] helpItems = {"about us"};

private JMenu menu;

private JMenuItem fileMenuItems, editMenuItems, formatMenuItems, helpMenuItems;

private JMenuBar bar;

private JTextArea area;

private JFileChooser fc;

// private OpenandSaveText openAndsave;

public WordProcessor() {

area = new JTextArea();

getContentPane().add(area);

// openAndsave=new OpenandSaveText();

intializeMenuBar();

intializeMenuItems();

}

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 intializeMenuItems() {

for (int i = 0; i < fileItems.length; ++i) {

fileMenuItems = new JMenuItem(fileItems);

bar.getMenu(0).add(fileMenuItems);

bar.getMenu(0).getActionCommand().equals(fileItems[1]);

}

for (int i = 0; i < editItems.length; ++i) {

editMenuItems = new JMenuItem(editItems);

bar.getMenu(1).add(editMenuItems);

}

for (int i = 0; i < formatItems.length; ++i) {

formatMenuItems = new JMenuItem(formatItems);

bar.getMenu(2).add(formatMenuItems);

}

for (int i = 0; i < helpItems.length; ++i) {

helpMenuItems = new JMenuItem(helpItems);

bar.getMenu(3).add(helpMenuItems);

}

}

public void actionPerformed(ActionEvent e) {

openFile(e);

if (e.getActionCommand().equals(fileItems[1])) {

bar.getMenu(0).getItem(1).addActionListener(this);

}

}

private void openFile(ActionEvent e) {

if (e.getActionCommand().equals(fileItems[1])) {

fc = new JFileChooser();

fc.showOpenDialog(fc);

}

}

}

شكراً

#2

الكود مرة أخرى لأنه لم يكن منسق المرة الأولى

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

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 String[] editItems = {"undo", "cut", "copy", "past", "delete"};
private String[] formatItems = {"font"};
private String[] helpItems = {"about us"};
private JMenu menu;
private JMenuItem fileMenuItems, editMenuItems, formatMenuItems, helpMenuItems;
private JMenuBar bar;
private JTextArea area;
private JFileChooser fc;
// private OpenandSaveText openAndsave;

public WordProcessor() {
area = new JTextArea();
getContentPane().add(area);
// openAndsave=new OpenandSaveText();
intializeMenuBar();
intializeMenuItems();
}

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 intializeMenuItems() {
for (int i = 0; i < fileItems.length; ++i) {
fileMenuItems = new JMenuItem(fileItems);
bar.getMenu(0).add(fileMenuItems);
bar.getMenu(0).getActionCommand().equals(fileItems[1]);


}

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

public void actionPerformed(ActionEvent e) {
openFile(e);
if (e.getActionCommand().equals(fileItems[1])) {
bar.getMenu(0).getItem(1).addActionListener(this);
}
}

private void openFile(ActionEvent e) {
if (e.getActionCommand().equals(fileItems[1])) {
fc = new JFileChooser();
fc.showOpenDialog(fc);
}
}
}
#3

سلام ياشباب

عرفت أظبط المشكلة

معلش انا دوشتكم

و أدى الشفيرة المظبطة

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JTextArea;

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 JMenu menu;
	private JMenuBar bar;
	private JTextArea area;
	private JFileChooser fc;

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

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

	private void openFile(ActionEvent e) {
		if (e.getSource()==fileMenuItems[1]) {
			fc = new JFileChooser();
			fc.showOpenDialog(fc);
		}
	}
}

و سننتقل للمرحلة التالية و هى قراءة ملف أو حفظ ملف

ربنايستر

باى باى

بيشوى

#4

منور يا أخ بيشوي

مشتاقين لك يا بني

أي حاجة تحتاجها أنا موجود كالعادة

تحياتي

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

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

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

728x90.png

#5

ربنا يخليك مستر علاء

و شد حيلك

ترقبوا إزعاجنا أول بأول

#6

سلام للجميع

__________

و فى محاولة ظريفة لقراءة ملف و بعد البحث و القراءة تمكنا من كتابة الكود المختص بذلك و لكن هناك مشكلة و هى أنى عندما أفتح الملف ذات الإمتداد .txt يعطينى رسالة ال ERROR

الى مكتوبة فى ال catch يعنى مش قادر ينفذ ال try - مش عارف يقرا الملف

أنا صراحة لا أعرف لماذا هذا العيب

أترككم مع الكود فى نهايته سترون الإضافة الجديدة ( و جربوه عندكم حتى ترون ما قولته )

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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;

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 JMenu menu;
	private JMenuBar bar;
	private JTextArea area;
	private JFileChooser fc;

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

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

	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.OPEN_DIALOG) {
				readFile();
			}
		}
		if (e.getSource() == fileMenuItems[5]) {
			System.exit(0);
		}
	}

	private void readFile() {
		int recCount = 0;
		String record = null;
		DataInputStream dis = null;
		try {
			File f = new File("myText.txt");
			FileInputStream fis = new FileInputStream(f);
			BufferedInputStream bis = new BufferedInputStream(fis);
			dis = new DataInputStream(bis);
			while ((record = dis.readLine()) != null) {
				recCount++;
				area.setText(record);
			}
		} 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) {
				}
			}
		}
	}
}

شكراً

#7

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

وهذه هي الشيفرة الناتجة

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
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;

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 JMenu menu;
	private JMenuBar bar;
	private JTextArea area;
	private JFileChooser fc;

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

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

	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.OPEN_DIALOG) {
				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 {
			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);
			e.printStackTrace();
		} finally {
			// if the file opened okay, make sure we close it
			if (dis != null) {
				try {
					dis.close();
				} catch (IOException e) {
				}
			}
		}
	}
}

تحياتي

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

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

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

728x90.png

#8

حقاً مستر علاء لابد من استعمال ال method "getSelectedFile" حتى يعرف أنه سيفتح ملف

و استعمال ال method append insted of setText

لأنه فى append يقرا الفايل كاملاً

اما setText يقرا السطر الأخير فقط

شكراً للمعلومة المفيدة مستر علاء

ربنا يعوضك

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

أم لو نص انجليزى يظهر كما هو

فهذا يعنى أنه لابد من عمل كود للتعامل مع اللغة مش كده بردو

؟؟

شكرا

بيشوى

#9

شكرا عالموضوع الجيد

وان شاء الله في تقدم مستمر. :clapping:

#10

كويس اوى الموضوع دة...

التكويد بتاعك ممتاز و مختصر ربنا يزيدك....كنت بردو عايش اعمل ريفرش بس كنت براجع على الدنيا من الاول

شكرا

سؤال على الماشى...

الفرق بين wait and sleep in threads

وشكرا

تم تعديل هذه المشاركة بواسطة علاء الصالحي في 29 يونيو 2009 في 08:42 — السبب: حذف التكرار

#11

الأخ Neo_2010

برجاء عدم الخروج عن محتوى الموضوع

تحياتي

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

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

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

728x90.png

#12

سلام للجميع و نستكمل موضوعنا الشيق الذى بسببه سيرتفع ضغطى :angry:

انا مواجه مشكلة فى ال save as

مش عارف اظبط الكود المسئول عن هذا

قرات فى الjavadoc و التيتوريل و مصادر أخرى و لكن لم تكون بطريقة مباشرة

و هذا ما عرفت اكتبه

  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) {
		String record=null;
		int recCount = 0;
		try{
			FileOutputStream fis=new FileOutputStream(f);
			BufferedOutputStream bos=new BufferedOutputStream(fis);
			DataOutputStream dos=new DataOutputStream(bos);
			while((record=dos.writeUTF(record))!=null){
				recCount++;
			}
		}
		catch(IOException e){
				//any thing
		}
	}

أتمنى من يعرف الفكرة يفيدنا

و شكراً

#13

الجزئية الى فوق مباشرة غلط جداً

بعد البحص و المحاولات ثانية

توصلت لهذه و لكن أيضاً غير كفؤ

	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) {
		String myFile = "file";
		DataOutputStream dos = null;
		FileOutputStream fos = null;
		BufferedOutputStream bos = null;
		try {
			f = new File(myFile);
			fos = new FileOutputStream(f);
			bos = new BufferedOutputStream(fos);
			dos = new DataOutputStream(bos);
			dos.writeBytes("aaaa");
			dos.flush();
			dos.close();
			JOptionPane.showMessageDialog(null, "Successfully wrote to the file named" + myFile +
					"go take a look at it");
		} catch (IOException e) {
			JOptionPane.showMessageDialog(null, "There is error occur in writing file");
		}
	}

رجاء من عنده الطريقة يفيدنا بها

#14

ما هو المشكل بالضبط؟؟؟ ما هي رسالة الخطأ؟؟

#15

لا توجد رسالة خطأ

و لكن المشكلة أنى أريد أن أكتب ملف ثم عندما أضغط على save as

يُحفظ فى مكان ما

بعد ما بضغط على save as بيعطينى الرسالة دى الى مكتوبة فى ال Joptionpane

Successfully wrote to the file named" + myFile +

"go take a look at it"

و اذهب مثلا الى الديسك توب حيث حفظت الملف هناك أجد انه لم يُحفظ

ياريت لو تعرف طريقة حفظ الملف قولنا عليها

شكرا

#16

مثال

import javax.swing.*;
import java.awt.event.*;
import java.io.*;

public class SaveAs extends JFrame {	

	JButton btnSaveAs;

	public SaveAs() {
		btnSaveAs = new JButton("Save as");
		btnSaveAs.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent ae) {
				JFileChooser fc = new JFileChooser();
				int resultVal = fc.showSaveDialog(fc);

				if (resultVal ==JFileChooser.APPROVE_OPTION) {
					saveFile(fc.getSelectedFile());					
				}
			}
		});
		add(btnSaveAs);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(100, 80);
		setVisible(true);
	}

	public void saveFile(File f) {
		BufferedWriter writer = null;
		try {
			writer = new BufferedWriter(new FileWriter(f));
			writer.write("Somthing very important");
			JOptionPane.showMessageDialog(null, "Successfully wrote to the file named " + f.getName() +
					" go take a look at it");
		} catch (IOException ioe) {
			ioe.printStackTrace();
		} finally {
			try {
				writer.close();
			} catch (IOException ioe) {
				ioe.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {
		new SaveAs();
	}
}
#17

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

شكرا مرة تانية

بس ليا تساؤل ليه لما بتجيى تحفظ ملف مش بتستعمل DataOutputstream زى ما بنستمعل DataInputStream عند قراءة ملف ؟؟؟؟

سؤال آخر ماذا تقصد بالدالة printStackTrace(); ؟؟؟؟

شكراً

_______________________________________________________________________________

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

الشفيرة الجديدة حالياً تمكنك من قراءة ملف و حفظ ملف

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

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 JMenu menu;
	private JMenuBar bar;
	private JTextArea area;
	private JFileChooser fc;

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

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

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

	}
}

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

حتى نستفيد و تكون الآفكار متبادلة

شكراً لكل من ساعدنى

بيشوى

#18

بما أنك تريد قراءة وكتابة ملفات نصية، فاستعمل الكلاسات التي ترث من Reader و Writer، وهي مخصصة لهذا الغرض

FileWriter, BufferedWriter, PrintWriter

FileReader, BufferedReader

الكلاس DataOutputstream لا تصلح في حالتك، فهي تستعمل ليس لكتابة نص، وإنما لكتابة primitive Java data types ويكون الناتج binary file وليس text file

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

مزيد من الشرح

#19

شكراً لشرحك

و قرأت عن ال dataStream

و فعلاص أنها تُستعمل مع ال primative data type

و طبقت مثال عليها شبه ال موجود فى ال tutorial

شكراً

#20

سلام للجميع

و بعد أن كنت اقرأ عن كيفية عمل ال cut , copy & paste

و كانت محاولات غير مجزية و لكن لا بأس منها

و فى دافع لا أعرف سببه تراسلت على الخاص مع الأخ herch

بحكم أنه ممن يساهمون فى المشاركة هنا

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

فاستفدت منها

و أضعها هنا لإفادة الإخوة الآخريين

 private void copyCutPasUndotText(ActionEvent e) {
		if (e.getSource() == editMenuItems[0]) {
			String undo = null;
			Stack stack = new Stack();
			String content = null;
			try {
				undo = (String) stack.pop();
				content = undo;
				area.setText(content);
			} catch (Exception exc) {
				//   exc.printStackTrace();
			}
		}
		if (e.getSource() == editMenuItems[1]) {
			area.cut();
		}
		if (e.getSource() == editMenuItems[2]) {
			area.copy();
		}
		if (e.getSource() == editMenuItems[3]) {
			area.paste();
		}
		if (e.getSource() == editMenuItems[4]) {
			area.setText("");
		}

	}

هنا لو تلاحظون أنى أضفت الخاصية undo و لكنها لا تعمل ؟؟

أتكلم عنها :

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

تعادا استعمال ctrl+z

هنا أحاول تصميم هذه الخاصية باستعمال الstack و لكن دون جدوى

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

عندما أحذف ال comment من أمام السطر

 //   exc.printStackTrace();

يعطينى

 EmptyStackException

لماذا ؟؟؟؟

سوال أخير

هل هناك أحد يعرف طريقة أخرى لتطبيق خاصية ال copy - cut - paste

عِوضاً عن منادتهم فقط

؟؟؟؟

شكراً

بيشوى عاطف

#21

الأمر واضح يا سيد عاطف، الStack فارغ لأنك لم تضف شيئا، وأنت تحاول استخراج العنصر الأول منه، فهو يقول لك EmptyStackException

بالنسبة للcut,copy,paste فما مشكلتك مع هذه الميثود، لماذا تريد أن تصعب الأمور؟؟

من جهة أخرى، أنت لا تحتاج لإنشاء نظام undo/redo خاص بك، فالجافا تعطيك هذه الإمكانية

Implementing undo and redo

http://' target="_blank">

#22

شكراً لتعاونك معى

أنا لا أريد تصعيب الأمور .. و لكن معرفة بالشئ لا أكثر .. إن كنت تعلم قول لنا أو لمح لنا

و لك كامل الحرية :rolleyes:

أما من ناحية ال stack

أريد أنا أطبق استعمال ال stack

هل يمكن فى هذه الحالة أم لا

؟؟

لو ممكن تناقش معنا

شكرا جدا لتعبك

بيشوى

#23

بالنسببة للنسخ واللصق، الكلاس المستعملة هي

Clipboard

ويمكن الحصول عليها بهذا السطر

Clipboard clipBrd = Toolkit.getDefaultToolkit().getSystemClipboard();

محتوى Clipboard يكون object يرث من الinterface Transferable، وفي حالتك، بما أنك ستنسخ نص، فيجب استعمال StringSelection

#####################

قراءة محتوى الclipboard

#####################


Transferable t = clipBrd.getContents(null);
try {
String clipContent = t.getTransferData(DataFlavor.stringFlavor).toString();
}
} catch (UnsupportedFlavorException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
 Clipboard clipBrd = Toolkit.getDefaultToolkit().getSystemClipboard();

DataFlavor.stringFlavor تعني أن ما يتم نقله هو عبارة عن String

#####################

الكتابة في الclipboard

#####################


clipBrd.setContents(new StringSelection("Some text"), null);
Clipboard clipBrd = Toolkit.getDefaultToolkit().getSystemClipboard();

هذا ما تقوم به الميثود copy() و paste()

أرجو أن تكون الفكرة وصلت، لأني لا أجيد الكتابة بالعربية، وقد تعبت حتى كتبت هذه السطور :D :D :D

بالسبة للundo/redo فالمسألة صعبة إذا كنت لا تريد الإستفادة مما تتيحه الجافا، ولكن أنت حر

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

#24

ممممممم لا أعرف لماذا تريد عمل واحد خاص بك

لكن لا مانع من بعض التفكير

أظنك تحتاج إلى مكدسين (Stack) لا مكدس واحد

تحياتي

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

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

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

728x90.png

#25

معلش سوال غلس منى

الجزء هذا

 Clipboard clib=Toolkit.getDefaultToolkit().getSystemClipboard();
			Transferable t=clib.getContents(null);
			try{
				String clibContent=t.getTransferData(DataFlavor.stringFlavor).toString();
			}
			catch(UnsupportedFlavorException ex){
				ex.printStackTrace();
			}
			catch(IOException io){
				io.printStackTrace();
			}

هو بديل

area.copy();

و الجزء هذا :

Clipboard clib=Toolkit.getDefaultToolkit().getSystemClipboard();
			clib.setContents(new StringSelection("aaa"),null);

بديل

area.paste();

و عموما ً أنا لما عملت كده

	  if (e.getSource() == editMenuItems[2]) {
		   // area.copy();
			Clipboard clib=Toolkit.getDefaultToolkit().getSystemClipboard();
			Transferable t=clib.getContents(null);
			try{
				String clibContent=t.getTransferData(DataFlavor.stringFlavor).toString();
			}
			catch(UnsupportedFlavorException ex){
				ex.printStackTrace();
			}
			catch(IOException io){
				io.printStackTrace();
			}

		}
		if (e.getSource() == editMenuItems[3]) {
		   // area.paste();
			Clipboard clib=Toolkit.getDefaultToolkit().getSystemClipboard();
			clib.setContents(new StringSelection("aaa"),null);
		}

مش بيتنفذ خالص

مش بيدى error

لكن مش بيتنفذ البرنامج

أيش المشكلة

؟؟؟

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