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

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

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

عاوز اقول له أبدا من العنصر رقم 5 الموجود فى ال array of string"imageNames" و انتهى عند العنصر رقم 7

و بما أن العنصر string قمت بتحويله لل int

ده الى اقصده

شكرا

#152

طيب يعني كيف سيتم تحويل "bold" إلى int؟؟؟ لا يمكن، لذلك يعطيك الexception

لماذا لا تفعل بكل بساطة

for (int i = 5; i < 8; i++) { ....

هذا من جهة، من جهة ثانية، فأنت تقوم بإنشاء نفس الأزرار مرتين، في الloop الأول وأيضا في الثاني

بما أن الأزرار قد تم إنشاءها فيمكنك أن تمرر لها الactions عن طريق الميثود setAction في الloop الثاني


buttons.setAction(action[i-5])
}
for (int i = 5; i < 8; i++) {

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

#153

أولاً : أنا مش بحول Bold ل int أنا بحول String ل Int

اسم الString Bold

ثانياً أنا جربت فكرتك حالاً و تمام (( أنا كنت بفكر بطريق خاطئة ))

ثالثأ طبقت على الشمال و اليمين و النصف و ال align

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

الكود النهائى :

 private String[] imageName = {"new", "open", "save", "copy", "paste", "Bold", "Italic", "underLine", "Color", "Left", "Center", "Right", "Align"};
	private AbstractAction[] action = {
		new HTMLEditorKit.BoldAction(),
		new HTMLEditorKit.ItalicAction(),
		new HTMLEditorKit.UnderlineAction()};
	private AbstractAction[] anthorAction = {
		new HTMLEditorKit.AlignmentAction("Left", StyleConstants.ALIGN_LEFT),
		new HTMLEditorKit.AlignmentAction("center", StyleConstants.ALIGN_CENTER),
		new HTMLEditorKit.AlignmentAction("right", StyleConstants.ALIGN_RIGHT)};

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

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

		for (int i = 5; i < 8; ++i) {
			buttons.setAction(action[i - 5]);
		}
		for (int i = 9; i <12; ++i) {
			buttons.setAction(anthorAction[i - 9]);
		}
		getContentPane().add(barIcon, BorderLayout.NORTH);
	}

الصورة الى ظهر فيها المصيبة الكبرى و هى اختفاء الصور :

post-166855-1249584008_thumb.jpg

#154

حلينا المشكلة

و لكن مش حل مقنع :

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

		for (int i = 5; i < 8; ++i) {
			buttons.setAction(action[i - 5]);
			buttons.setIcon(imagicons[i - 5]);
			buttons.setToolTipText(imageName);
		}
		for (int i = 9; i < 12; ++i) {
			buttons.setAction(anthorAction[i - 9]);
			buttons.setIcon(imagicons[i - 9]);
			buttons.setToolTipText(imageName[i - 9]);
		}

الصور رجعت تانى و ذلك بإضافة ال setIcon لكل حلقة

و لكن المشكلة فى ال loop الكبيرة- أول واحدة - التى تجمع ال buttons كلها بها setIcon

و اللقة الثانية و الثالثة بها setIcon

و كإننا نكرر الأمور

فما من حال مجزى ؟؟

#155

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

على العموم أضف setIcon مرة أخرى بعد setAction وستظهر الصور


buttons.setAction(action[i - 5]);
buttons.setIcon(imagicons);
}
for (int i = 9; i <12; ++i) {
buttons.setAction(anthorAction[i - 9]);
buttons.setIcon(imagicons);
}
   for (int i = 5; i < 8; ++i) {

#156

سبقتك فى الكتابة :lol:

مش خاصية ال align

المسئول عتها ALIGN_JUSTIFIED

 new HTMLEditorKit.AlignmentAction("Align", StyleConstants.ALIGN_JUSTIFIED)

صحيح لما بتعمل الarray فى الحلقة بتعمل كده

actions[i-5];

أنا كنت بعمل كده

actions;

كان يعطينى arrayBoundException

لماذا مع العلم انها صحيحة من وجهة نظرى

شكراً

#157

في الloopعندك في ال i تبتدأ ب5، يعني لما تعمل action فهذا يعني action[5]، والمصفوفة فيها فقط ثلاث عناصر 0 1 2، يعني لا يوجد أي عنصر في الindex 5 فما فوق، لهذا يعطيك الexception

عندما تعمل action[i-5] يعني action[5-5] action[6-5] action[7-5] يعني أيضا action[0] action[1] action[2]

وصلت الفكرة؟

#158

تمام يا ريس فهمتك

تعبتك و خلى نفسك طويل جداً عشان المشوار لسه باقى 1000 ضعف الى مضى .............أنا بقول 1000 بس عشان متتخضش لكن بقى كتييييييييير

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

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

جربت ال Table الى انت عملته طبعاً شكل الجدول مش تمام لأننا بنستعمل Html

فنرى فى اللحظات التالية طريقة رسم الجدول الى قدمها محمد و لكنى سمعتك تقول

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

هل ده يمنعنى من انى ارسم الجدول ..... عاوز اقول نرسم وأيضاً نستعمل خواص ال swing للكتابة فى الجدول و هكذا و لا انا فاهمك غلط ؟؟

أما الأخ علاء قال كلمة لم أفهمها جيداً

اقتباس
أعتقد أفضل طريقة ممكنة لهذه العملية

هي استخدام JPanel موضوع عليها JTextField بعدد الخلايا لهذا الجدول

بهذا نضمن أكبر تحكمية ممكنة

ما رأيكم؟؟؟؟

وضح رأيك معلش يا علاء

عموماص سأبدأ بتجربة رسم الجدول اللعين :lol: :angry:

سلام

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

#159

كنت أقصد كتابة النص الذي يكون خارج الجدول، ليس داخله

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

#160

بس تكونوا على الخط معايا :lol:

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

سلام

#161

سلام للجميع :

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

كما تعلمت من مستر محمد كيفية رسم الجدول ففعلتها هنا و لكن لم اعرف كيف أُدرج الرسم على ال Editorpane

انظروا للكود و سترون أن الرسم لم يظهر لانى لم أدرجه على الEditorPAne

فكيف ذلك ؟؟

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;

public class DrawTable extends JFrame implements ActionListener {

	private JPanel mainPanl, spainerPanel, editorPanel;
	private JLabel row, col;
	private JSpinner rowSpinner, columnSpinner;
	private JButton applayButton;
	private JEditorPane editorPane;
	TableByDrawing tableByDrawing;

	public DrawTable() {
		tableByDrawing = new TableByDrawing();
		intializeComponents();
	}

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

	}

	private void intializeComponents() {
		mainPanl = new JPanel(new BorderLayout());
		spainerPanel = new JPanel(new FlowLayout());
		editorPanel = new JPanel();

		row = new JLabel("Row");
		rowSpinner = new JSpinner();
		rowSpinner.setPreferredSize(new Dimension(50, 20));
		rowSpinner.setMaximumSize(new Dimension(50, 20));

		col = new JLabel("Column");
		columnSpinner = new JSpinner();
		columnSpinner.setPreferredSize(new Dimension(50, 20));
		columnSpinner.setMaximumSize(new Dimension(50, 20));
		applayButton = new JButton("applay");
		applayButton.addActionListener(this);
		spainerPanel.add(row);
		spainerPanel.add(rowSpinner);
		spainerPanel.add(columnSpinner);
		spainerPanel.add(col);
		spainerPanel.add(applayButton);

		editorPane = new JEditorPane();
		editorPane.setPreferredSize(new Dimension(1000, 500));
		editorPanel.add(editorPane);

		mainPanl.add(spainerPanel, BorderLayout.NORTH);
		mainPanl.add(editorPanel, BorderLayout.CENTER);

		getContentPane().add(mainPanl);


	}

	public void actionPerformed(ActionEvent e) {
		int rows = (Integer) rowSpinner.getValue();
		int columns = (Integer) columnSpinner.getValue();
		if (rows != 0 && columns != 0) {
			tableByDrawing.drawTable(rows, rows);
			tableByDrawing.repaint();
		}
	}
}

import java.awt.Graphics;
import javax.swing.JFrame;

public class TableByDrawing extends JFrame {

	private int r, c;

	public TableByDrawing() {
	}

	public void paintComponent(Graphics g) {
		super.paintComponents(g);
		int xDist = 400 / r;
		int yDist = 200 / c;
		for (int i = 0; i < r; ++i) {
			g.drawLine(30, 30 + (yDist * i), 430, 30 + (yDist * i));
		}

		for (int i = 0; i < c; ++i) {
			g.drawLine(30 + (xDist * i), 30, 30 + (xDist * i), 230);
		}
	}

	public void drawTable(int r, int c) {
		this.r = r;
		this.c = c;
	}
}

شكراً

#162

رجاء إجابتى على المشاركة التى فوق ....

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

هنا بقى يا شباب كود تانى من غير رسم كل الى هيعمله هيعرض الجدول على ال editorPane

بس بصراحة كده مليان مشاكل انا ده الى توصلتله (( الى عاوز اتعلمه ازاى اعرض الجدول على ال editorPane مش عاوز اكتر من كده دلوقتى ))

و بعد كده نشوف المشاكل التانية لكن الآن و للمرة الثانية عاوزاعرضه فقط

و الششفيرة المهببة بستين مصيبة (( سامحونى انا منفعل جدا من الصبح و من امارح و من قبله و محاولات فاشلة ))

import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.TableModel;

public class InsertTable extends JFrame {

	private TableTest tableTest;
	private JEditorPane editorPane;
	private JTable table;

	public InsertTable() {
		tableTest = new TableTest();
		table = new JTable((TableModel) tableTest);
		tableTest.applayButtonActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				editorPane.setText(table.toString());
			}
		});
	}

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

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.table.AbstractTableModel;

public class TableTest extends JFrame {

	private JPanel mainPanl, spainerPanel, editorPanel;
	private JLabel row, col;
	private JSpinner rowSpinner, columnSpinner;
	private JButton applayButton;

	public TableTest() {
		intializeComponent();
	}

	private void intializeComponent() {
		mainPanl = new JPanel(new BorderLayout());
		spainerPanel = new JPanel(new FlowLayout());
		editorPanel = new JPanel();

		row = new JLabel("Row");
		rowSpinner = new JSpinner();
		rowSpinner.setPreferredSize(new Dimension(50, 20));
		rowSpinner.setMaximumSize(new Dimension(50, 20));

		col = new JLabel("Column");
		columnSpinner = new JSpinner();
		columnSpinner.setPreferredSize(new Dimension(50, 20));
		columnSpinner.setMaximumSize(new Dimension(50, 20));
		applayButton = new JButton("applay");

		spainerPanel.add(row);
		spainerPanel.add(rowSpinner);
		spainerPanel.add(columnSpinner);
		spainerPanel.add(col);
		spainerPanel.add(applayButton);
		mainPanl.add(spainerPanel, BorderLayout.NORTH);
		mainPanl.add(editorPanel, BorderLayout.CENTER);

		getContentPane().add(mainPanl);

	}
	public void applayButtonActionListener(ActionListener listener){
		applayButton.addActionListener(listener);
	}

	class TableModelTest extends AbstractTableModel {

		int[][] rowAndcol;
		int[] numOfrow = (int[]) rowSpinner.getValue();
		int[] numofColumn = (int[]) columnSpinner.getValue();

		public int getRowCount() {
			return numOfrow.length;
		}

		public int getColumnCount() {
			return numofColumn.length;
		}

		public Object getValueAt(int rowIndex, int columnIndex) {
			return rowAndcol[rowIndex][columnIndex];
		}
	}
}

على فكرة سبقى و علاء ظبط معايا حتى زى كده بس لم افهمه جيداً

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

منتظركم و بشدة (( بشد فى شعرى )) :angry:

سلام

#163
table = new JTable((TableModel) tableTest);

TableTest ترث من JFrame، يعني أنت تحاول تحويل JFrame إلى TableModel!!!!!!!!!!!!

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

#164

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

؟؟؟؟؟

انا دخت فيها صدقنى

#165

أنسى الى فات بص هنا

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

import java.awt.Dimension;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JEditorPane;
import javax.swing.JFrame;

public class InsertTable extends JFrame {

	private TableTest tableTest = new TableTest();
	private JEditorPane editorPane;

	public InsertTable() {
		editorPane = new JEditorPane();
		tableTest.applayButtonActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				editorPane.setText(tableTest.getTableModel().toString());
			}
		});
	}

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

}

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.TableModel;

public class TableTest extends JFrame {

	private JPanel mainPanl, spainerPanel, editorPanel;
	private JLabel row, col;
	private JSpinner rowSpinner, columnSpinner;
	private JButton applayButton;
	private JTable table;
	private TableModel tableModel = new TableModelTest();

	public TableTest() {
		table=new JTable(tableModel);
		intializeComponent();
	}

	private void intializeComponent() {
		mainPanl = new JPanel(new BorderLayout());
		spainerPanel = new JPanel(new FlowLayout());
		editorPanel = new JPanel();

		row = new JLabel("Row");
		rowSpinner = new JSpinner();
		rowSpinner.setPreferredSize(new Dimension(50, 20));
		rowSpinner.setMaximumSize(new Dimension(50, 20));

		col = new JLabel("Column");
		columnSpinner = new JSpinner();
		columnSpinner.setPreferredSize(new Dimension(50, 20));
		columnSpinner.setMaximumSize(new Dimension(50, 20));
		applayButton = new JButton("applay");

		spainerPanel.add(row);
		spainerPanel.add(rowSpinner);
		spainerPanel.add(columnSpinner);
		spainerPanel.add(col);
		spainerPanel.add(applayButton);
		mainPanl.add(spainerPanel, BorderLayout.NORTH);
		mainPanl.add(editorPanel, BorderLayout.CENTER);

		getContentPane().add(mainPanl);

	}

	public void applayButtonActionListener(ActionListener listener) {
		applayButton.addActionListener(listener);
	}

	class TableModelTest extends AbstractTableModel {

		int[][] rowAndcol;
		int[] numOfrow = (int[]) rowSpinner.getValue();
		int[] numofColumn = (int[]) columnSpinner.getValue();

		public int getRowCount() {
			return numOfrow.length;
		}

		public int getColumnCount() {
			return numofColumn.length;
		}

		public Object getValueAt(int rowIndex, int columnIndex) {
			return rowAndcol[rowIndex][columnIndex];
		}
	}

	public TableModel getTableModel() {
		return tableModel;
	}

}

بيعطى

nullPointerException

على السطر ده

   private TableModel tableModel = new TableModelTest();

شوف انا تعبت ساعدنى هنا بقى

شكرا

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

#166

أسف أحبائى كنت وضعت class Testtable مرتين

أنا صلحت المشاركة

شكرا

#167

هذا اخر ما تمكن من عمله أخي بيشاوي ,,

لا أدري كيف يمكن أن يفيدك,

للعلم أنا استخدمت JTextPane وليس JEditorPane..

437351887.jpg

الكود الخاص بالسابق //


import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;

public class tableAndeditorpane extends javax.swing.JFrame {
JTable table;
public tableAndeditorpane() {
initComponents();
}

@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

jPanel1 = new javax.swing.JPanel();
jScrollPane1 = new javax.swing.JScrollPane();
jTextPane1 = new javax.swing.JTextPane();
rows = new javax.swing.JSpinner();
jLabel1 = new javax.swing.JLabel();
columns = new javax.swing.JSpinner();
jLabel2 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jPanel1.setLayout(new java.awt.BorderLayout());

jScrollPane1.setViewportView(jTextPane1);

jPanel1.add(jScrollPane1, java.awt.BorderLayout.CENTER);

jLabel1.setText("ROWS");

jLabel2.setText("COLUMNS");

jButton1.setText("Insert Table");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(39, 39, 39)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rows, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(columns, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jButton1))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 696, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(jLabel1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(rows)
.addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 21, Short.MAX_VALUE)
.addComponent(columns, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, 591, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);

pack();
}// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int row = (Integer)rows.getValue();
int column = (Integer)columns.getValue();
if( row > 0 && column > 0 ){

table = new JTable(row, column);
int heigh = table.getRowHeight()*(row+1);

table.setSize(new Dimension(300, heigh+10));

JScrollPane s = new JScrollPane(table);
s.setPreferredSize(new Dimension(300, heigh+3));
StyledDocument doc = (StyledDocument)jTextPane1.getDocument();
Style style = doc.addStyle("tableDrawer", null);
StyleConstants.setComponent(style, s);
try{
doc.insertString(doc.getLength(), " ", style);
}
catch(Exception ex){ex.printStackTrace();}
}
}

public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new tableAndeditorpane().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JSpinner columns;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextPane jTextPane1;
private javax.swing.JSpinner rows;
// End of variables declaration

}
 import java.awt.Dimension;

#168

استخدام JTextPane .

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JTextPane;
import javax.swing.text.Style;
import javax.swing.text.StyleConstants;
import javax.swing.text.StyledDocument;
public class NewClass {
	public static void main(String[]args){
		JTextPane t = new JTextPane();
		StyledDocument doc = (StyledDocument)t.getDocument();
		try{
			Style style = t.addStyle("Red", null);
			StyleConstants.setForeground(style, Color.red);
			doc.insertString(doc.getLength(), "Hello How are you..?", style);
			style = t.addStyle("Red Underline", style);
			StyleConstants.setUnderline(style, true);
			doc.insertString(doc.getLength(), " I'm fine..", style);
			style = t.addStyle("24pts", null);
			StyleConstants.setFontSize(style, 24);
			doc.insertString(doc.getLength(), " Font Size Now is 24\n", style);
			style = t.addStyle("12pts", null);
			StyleConstants.setFontSize(style, 12);
			doc.insertString(doc.getLength(), " But now the font is 12", style);
			style = t.addStyle("Italic", null);
			StyleConstants.setItalic(style, true);
			doc.insertString(doc.getLength(), " I'm font with italic style\n", style);
			style = t.addStyle("Bold Italic", null);
			StyleConstants.setBold(style, true);
			doc.insertString(doc.getLength(), " I'm font with BOLD styles", style);
			StyleConstants.setItalic(style, true);
			doc.insertString(doc.getLength(), " I'm font with Bold & Italic styles", style);
			doc.insertString(doc.getLength(), " ", style);
			JFrame frame = new JFrame();
			frame.add(t);
			frame.setSize(400,300);
			frame.setVisible(true);
		}
		catch(Exception ex){ex.printStackTrace();}
	}
}
#169

سلام أخ محمد

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

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

Button applay

انظر الكود و قل لى السبب ....

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

public class TableTest extends JFrame {

	private JPanel mainPanl, spinnerPanel, areaPanel;
	private JLabel row, col;
	private JSpinner rowSpinner, colSpinner;
	private JButton applayButton;
	private JTextPane textPane;
	private JTable table;
	private JScrollPane scrollPane;

	public TableTest() {
		intializePanel();
		intializeSpinner();
		intilizeLabel();
		intializeButton();
		intializeTextPane();
		designGui();
		applayButton.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				int row = (Integer) rowSpinner.getValue();
				int col = (Integer) colSpinner.getValue();
				if (row > 0 && col > 0) {
					table = new JTable(row, col);

					scrollPane = new JScrollPane(table);
//					scrollPane.setPreferredSize(new Dimension(300, heigh + 3));
						scrollPane.setPreferredSize(new Dimension(600, 300));
					StyledDocument styledDocument = (StyledDocument) textPane.getDocument();
					Style style = styledDocument.addStyle("Table", null);
					StyleConstants.setComponent(style, scrollPane);
					try {
						styledDocument.insertString(styledDocument.getLength(), "", style);

					} catch (Exception exception) {
						exception.printStackTrace();
					}
					textPane.add(scrollPane);
				}
			}
		});
	}

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

	private void intializePanel() {
		mainPanl = new JPanel(new BorderLayout());
		spinnerPanel = new JPanel(new FlowLayout());
		areaPanel = new JPanel();
	}

	private void intializeSpinner() {
		rowSpinner = new JSpinner();
		colSpinner = new JSpinner();
	}

	private void intilizeLabel() {
		row = new JLabel("Insert row:");
		col = new JLabel("Insert column:");
	}

	private void intializeButton() {
		applayButton = new JButton("applay");
	}

	private void intializeTextPane() {
		textPane = new JTextPane();
		//   textPane.setPreferredSize(new Dimension(1000, 500));
	}

	private void designGui() {
		spinnerPanel.add(row);
		spinnerPanel.add(rowSpinner);
		spinnerPanel.add(col);
		spinnerPanel.add(colSpinner);
		spinnerPanel.add(applayButton);

		// areaPanel.add(textPane);

		mainPanl.add(spinnerPanel, BorderLayout.NORTH);
		mainPanl.add(textPane, BorderLayout.CENTER);

		getContentPane().add(mainPanl);
	}
}

شكراص مقدما ً

سلام

#170

أنا لم أجرب الكود خاصتك , لكن أظن أن الحل بسيط :

المشكلة تكمن في الجملة التالية //

styledDocument.insertString(styledDocument.getLength(), "", style);

بحيث تصبح كالتالي //

styledDocument.insertString(styledDocument.getLength(), " ", style);

قد لا تلاحظ الاختلاف, لكن الاختلاف هو في ("") بحيث يجب أن يكون مسافة بينهما لتصبح (" ")

#171

حقاً يا أخ محمد هذا سبب المشكلة

سوال آخر :

كنت انت سويت كده

int heigh = table.getRowHeight() * (row);

أنا لما استغنيت عن الheight برقم زى 300 يعنى

كان لما يعرض الجدول يعرضه و يظهر مساحة رمادى تقريبا من تحته

لكن لما بنضع هذه بيظهر الجدول فقط

ممكن توضح تفسير السطر ده ايه ؟؟؟

انا شايف انك بتجيب عدد الصفوف و تضربها فى ارتفاع الجدول الذى هو ايضا عدد الصفوف

لما منكتبش مثل هذا فقط

int heigh = table.getRowHeight();

أنا جربت كده بردو لقيت لما بيظهر الجدول بتظهر تحته أيضاًمساحة رمادى كده

وضح الأمور دى معلش

شكراً

سلام

#172

أهلا أخي بيشوي ,,,,

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

ببساطة , لو اني لم أقم بكتابة int heigh = table.getRowHeight() * (row); , لظهر في كثير من الأحيان مساحة رمادية اللون نحن في غنى عنها.

شرح الأمر ببساطة أكثر //

int heigh = table.getRowHeight();

الكود السابق : يستخدم لمعرفة ارتفاع الصف الواحد, ومن خلالها سوف نستفيد في أننا سنستطيع أن نحدد ارتفاع مناسب للجدول المطلوب ككل بحيث لا تظهر عندنا مساحة رمادية اللون زائدة عن حاجتنا.

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

tableHeigh = table.getRowHeight() * rows

ولذلك عندما قمت أخي بيشوي بكتابة الرقم 300 بدل heigh , كان هناك زيادة في حجم الجدول مقارنة بارتفاع كل صف , مما أدى لظهور المساحة الرمادية .

أتمنى أنك استوعبتني ,, وبالتوفيق

ولذلك

تم تعديل هذه المشاركة بواسطة MKSoft في 8 أغسطس 2009 في 23:14

#173

فهمت ياأخ محمد شكراكثيراً

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

فى مشكلة كبيرة :D

الكود الى كتبته الخاص ب استخدم ال textPane

فى التحكم فى انواع الfont و هكذا

العملية طلعت ضاربة خالص

أولاً سترى فى الكود من اسفل

انك عندنا تظلل على كلمة ما من نص معين ليحعلها Bold

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

دى أول مشكلة

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

أنك لما بتحب تأثر على جزء معين من النص و يجعله Bold

ده بيجعل النص كله bold

مش الكحزء المحدد فقط

و لما تغلبنا عل المشكلة باستعمال EditorPane & HtmalEditorKit

بقينا مش قادرين نعرض الجدول على ال EditorPane كما عرضناه على ال TextPane

انظر للكود يمكن يكون عندك فكرة حلوة للتحكم ايضأ فى ال TextPane

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();
		if (e.getSource() == boldButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.setBold(style, true);
			try {
				doc.insertString(doc.getLength(), textPane.getText(), style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}
		if (e.getSource() == ItlicButton) {
			style = textPane.addStyle(textPane.getText(), null);
			StyleConstants.setItalic(style, true);
			try {
				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.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.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.insertString(doc.getLength(), textPane.getText(), style);
			} catch (Exception exception) {
				exception.printStackTrace();
			}
		}
	}
}

صورة توضح الجريمة

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

post-166855-1249764619_thumb.jpg

#174

يا بيشوي موضوع JTable لا يمكنك التحكم فيه كما تريد

بمعنى لا تستطيع تغيير ألوان header لا تستطيع تغيير أسماءها

فكر بالموضوع جيداً

ستجد لديك مشاكل كثير من هذه النواحي

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

تحياتي

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

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

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

728x90.png

#175

يا علاء أنا دلوقتى اكتفيت بعرض الجدول فقط لا غير و لكن أنا اتحدث عن مشكلة أخرى فى المشاركة التى قبلك انت مباشرة

شكراً

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

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

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

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

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