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

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

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

بعض التعديلات البسيطة :

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextPane;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class TextPaneAction extends JFrame implements ActionListener {

	private JPanel mainPanel, buttonPanel;
	private JButton boldButton, ItlicButton, underLineButton, leftButton, centerButton, rightButton;
	private JTextPane textPane;
	private StyledDocument doc;
	private Style style;

	public TextPaneAction() {
		mainPanel = new JPanel(new BorderLayout());

		buttonPanel = new JPanel();
		boldButton = new JButton("Bold");
		boldButton.addActionListener(this);

		ItlicButton = new JButton("Italic");
		ItlicButton.addActionListener(this);

		underLineButton = new JButton("unerLine");
		underLineButton.addActionListener(this);

		leftButton = new JButton("left");
		leftButton.addActionListener(this);

		centerButton = new JButton("center");
		centerButton.addActionListener(this);

		rightButton = new JButton("right");
		rightButton.addActionListener(this);

		buttonPanel.add(boldButton);
		buttonPanel.add(ItlicButton);
		buttonPanel.add(leftButton);
		buttonPanel.add(leftButton);
		buttonPanel.add(centerButton);
		buttonPanel.add(rightButton);

		textPane = new JTextPane();
		mainPanel.add(buttonPanel, BorderLayout.NORTH);
		mainPanel.add(textPane, BorderLayout.CENTER);

		getContentPane().add(mainPanel);
	}

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

	public void actionPerformed(ActionEvent e) {
		doc = textPane.getStyledDocument();
		String selected_txt= textPane.getSelectedText();
		int length = selected_txt.length();
		int endPos_selected_txt = textPane.getCaretPosition();
		int offset = endPos_selected_txt - length;

		if (e.getSource() == boldButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.setBold(style, true);
			try {

				doc.remove(offset, length);

				doc.insertString(offset, selected_txt, style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}
		if (e.getSource() == ItlicButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.setItalic(style, true);
			try {
				doc.remove(offset, length);

				doc.insertString(offset, selected_txt, style);
			 //   doc.insertString(doc.getLength(), textPane.getText(), style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}

		  if (e.getSource() ==underLineButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.setUnderline(style, true);
			try {
		   //	 doc.remove(offset, length);

			 //   doc.insertString(offset, n, style);
				doc.insertString(doc.getLength(), textPane.getText(), style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}

		  if (e.getSource() ==leftButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.getLeftIndent(style);
			try {
			//	doc.remove(offset, length);

			 //   doc.insertString(offset, n, style);
				doc.insertString(doc.getLength(), textPane.getText(), style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}

		  if (e.getSource() ==rightButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.getRightIndent(style);
			try {
		   //	 doc.remove(offset, length);

		   //	 doc.insertString(offset, n, style);
				doc.insertString(doc.getLength(), textPane.getText(), style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}
	}
}
#177

على قدر الإستفادة البرمجية التى استفدتها من طريقتك هذه

و لكنها مليئة بالعيوب ليس منك و لكن كلها بسبب استعمال ال JTextPAne

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

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

الإستنتاج الذى اكتشفته أن ال JTextPane فقير فى امكانيته

و لكن ال JEditorPane غنى بخواصه

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

هلما معاً نستمر فى استعمال ال JEditorPane نظراً لخواصه القوية فى التحكم فى النص المكتوب لجعله Bold-italic.....etc

و نفكر فى طريقة لعرض الجدول على الJEditorPane أيضاً

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

شكراً جزيلاً

#178

طيب يا بيشوي هات آخر نسخة استقريت عليها

خلينا نشوف هنعمل ايه

وكالعادة على الخميس كده أبقى معاك إن شاء الله

تحياتي

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

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

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

728x90.png

#179

سلام للجميع :

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

هنا يا شباب النسخة التى سنكمل عليها و هى المُستعمل بها ال JEditorPane

و كما لاحظنا أن ال EditorPane

مكنا كثيرا من التحكم فى النص

بس المشكلة الوحيدة فى الكود ده

لو تفتكروا اننا كنا عاملين خائص ال font

فى Dilog خاص به

وثم نعمل معاينة على كلمة Test قبل تطبيق الخواص على النص ارئيسى

المشكلة بقى اننا كنا عملينه على ال TExtPane

فعندما تغير ل EditorPane

مش بيحصل ايررو و لكن اصبح انه لا يتم تطبيق الخواص على المص الرئيس هى ليها حل بس انا مش عارف اظبطه

فى ال class TextEditor الجزية دى معلم عليها بكومنت

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

و ننتقل لبناء المكونات الكبرى و سنبدأ بعمل الجدول

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

جربوه و هتفهموا قصدى

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

Text.rar

#180

بيشوي الفئة المسماة insertTable كانت تحتوي على شيفرة

أين ذهبت هذه الشيفرة

تحياتي

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

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

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

728x90.png

#181

يا علاء صحصح :lol:

هذا ال class كنا بنستعمله أيام ما كنا بنعرض الجدول على TExtPane

الآن ما معك يستعمل ال EditorPane

فا الطريقة التى طبقنها فى ال insertTable لا تنفع بتاتاً هنا

على هذا سوف نُحاول عمل الجدول

و لو ليك تعليق إضافة نقد (( قوله يمكن أكون بفكر غلط ))

شكراً لك مستر علاء

#182

غريبة هذه الفئة تستعمل لتحديد عدد السطور والأعمدة الموجودة في الجدول

بالتالي عندما تريد تغيير الآلية

لا تحذف الواجهة كلية

تحياتي

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

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

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

728x90.png

#183

ماشى ماشى ....أنا فكرت مش هنستعمل ال الواجهة دى

على اعتبار اننا هنلجأ لطريقة أخرى

أوكى هضعها ...

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

#184

تم وضع ال class insertTable

Text.rar

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

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

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

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

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