عاوز اقول له أبدا من العنصر رقم 5 الموجود فى ال array of string"imageNames" و انتهى عند العنصر رقم 7
و بما أن العنصر string قمت بتحويله لل int
ده الى اقصده
شكرا
عاوز اقول له أبدا من العنصر رقم 5 الموجود فى ال array of string"imageNames" و انتهى عند العنصر رقم 7
و بما أن العنصر string قمت بتحويله لل int
ده الى اقصده
شكرا
طيب يعني كيف سيتم تحويل "bold" إلى int؟؟؟ لا يمكن، لذلك يعطيك الexception
لماذا لا تفعل بكل بساطة
for (int i = 5; i < 8; i++) { ....هذا من جهة، من جهة ثانية، فأنت تقوم بإنشاء نفس الأزرار مرتين، في الloop الأول وأيضا في الثاني
بما أن الأزرار قد تم إنشاءها فيمكنك أن تمرر لها الactions عن طريق الميثود setAction في الloop الثاني
for (int i = 5; i < 8; i++) {
تم تعديل هذه المشاركة بواسطة herch في 6 أغسطس 2009 في 21:12
أولاً : أنا مش بحول 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);
}الصورة الى ظهر فيها المصيبة الكبرى و هى اختفاء الصور :
حلينا المشكلة
و لكن مش حل مقنع :
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
و كإننا نكرر الأمور
فما من حال مجزى ؟؟
مسألة المصفوفة لم تقم إلا بتعقيد الأمور بدل تبسيطها من وجهة نظري
على العموم أضف setIcon مرة أخرى بعد setAction وستظهر الصور
for (int i = 5; i < 8; ++i) {
سبقتك فى الكتابة :lol:
مش خاصية ال align
المسئول عتها ALIGN_JUSTIFIED
new HTMLEditorKit.AlignmentAction("Align", StyleConstants.ALIGN_JUSTIFIED)صحيح لما بتعمل الarray فى الحلقة بتعمل كده
actions[i-5];
أنا كنت بعمل كده
actions;
كان يعطينى arrayBoundException
لماذا مع العلم انها صحيحة من وجهة نظرى
شكراً
في ال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]
وصلت الفكرة؟
تمام يا ريس فهمتك
تعبتك و خلى نفسك طويل جداً عشان المشوار لسه باقى 1000 ضعف الى مضى .............أنا بقول 1000 بس عشان متتخضش لكن بقى كتييييييييير
شكراً مستر عصام
-----------------------------------------------
جربت ال Table الى انت عملته طبعاً شكل الجدول مش تمام لأننا بنستعمل Html
فنرى فى اللحظات التالية طريقة رسم الجدول الى قدمها محمد و لكنى سمعتك تقول
اقتباسلكن لكتابة النص فضروري من استعمال أحد مكونات swing النصية
هل ده يمنعنى من انى ارسم الجدول ..... عاوز اقول نرسم وأيضاً نستعمل خواص ال swing للكتابة فى الجدول و هكذا و لا انا فاهمك غلط ؟؟
أما الأخ علاء قال كلمة لم أفهمها جيداً
اقتباسأعتقد أفضل طريقة ممكنة لهذه العمليةهي استخدام JPanel موضوع عليها JTextField بعدد الخلايا لهذا الجدول
بهذا نضمن أكبر تحكمية ممكنة
ما رأيكم؟؟؟؟
وضح رأيك معلش يا علاء
عموماص سأبدأ بتجربة رسم الجدول اللعين :lol: :angry:
سلام
تم تعديل هذه المشاركة بواسطة mr.beshoy في 6 أغسطس 2009 في 22:25
كنت أقصد كتابة النص الذي يكون خارج الجدول، ليس داخله
على العموم ممكن أي واحد من الإقتراحات يكون جيد، المهم أنت جرب وشوف ما يناسبك
بس تكونوا على الخط معايا :lol:
وصدقنى أول ما أحس انى هوقف المشروع ده و خلاص قربنا هديلك اتعابك :haha:
سلام
سلام للجميع :
--------------------
كما تعلمت من مستر محمد كيفية رسم الجدول ففعلتها هنا و لكن لم اعرف كيف أُدرج الرسم على ال 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;
}
}شكراً
رجاء إجابتى على المشاركة التى فوق ....
-----------------------------------------------------------
هنا بقى يا شباب كود تانى من غير رسم كل الى هيعمله هيعرض الجدول على ال 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:
سلام
table = new JTable((TableModel) tableTest);
TableTest ترث من JFrame، يعني أنت تحاول تحويل JFrame إلى TableModel!!!!!!!!!!!!
لم أقرأ الكود كاملا ولم أجربه، لكن فقط استرعى انتباهي هذا السطر لأنه غير منطقي بتاتا
يعنى مش ناوى تساعدنى فيها المشكلة دى
؟؟؟؟؟
انا دخت فيها صدقنى
أنسى الى فات بص هنا
---------------
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
أسف أحبائى كنت وضعت class Testtable مرتين
أنا صلحت المشاركة
شكرا
هذا اخر ما تمكن من عمله أخي بيشاوي ,,
لا أدري كيف يمكن أن يفيدك,
للعلم أنا استخدمت JTextPane وليس JEditorPane..
الكود الخاص بالسابق //
import java.awt.Dimension;
استخدام 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();}
}
}سلام أخ محمد
------------------
شوف يا أخى أنا كتبت هكذا و ططبقت نفس طريقتك لعمل الجدول و لكنه لا يظهر عندما أضغط على ال
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);
}
}شكراص مقدما ً
سلام
أنا لم أجرب الكود خاصتك , لكن أظن أن الحل بسيط :
المشكلة تكمن في الجملة التالية //
styledDocument.insertString(styledDocument.getLength(), "", style);
بحيث تصبح كالتالي //
styledDocument.insertString(styledDocument.getLength(), " ", style);
قد لا تلاحظ الاختلاف, لكن الاختلاف هو في ("") بحيث يجب أن يكون مسافة بينهما لتصبح (" ")
حقاً يا أخ محمد هذا سبب المشكلة
سوال آخر :
كنت انت سويت كده
int heigh = table.getRowHeight() * (row);
أنا لما استغنيت عن الheight برقم زى 300 يعنى
كان لما يعرض الجدول يعرضه و يظهر مساحة رمادى تقريبا من تحته
لكن لما بنضع هذه بيظهر الجدول فقط
ممكن توضح تفسير السطر ده ايه ؟؟؟
انا شايف انك بتجيب عدد الصفوف و تضربها فى ارتفاع الجدول الذى هو ايضا عدد الصفوف
لما منكتبش مثل هذا فقط
int heigh = table.getRowHeight();
أنا جربت كده بردو لقيت لما بيظهر الجدول بتظهر تحته أيضاًمساحة رمادى كده
وضح الأمور دى معلش
شكراً
سلام
أهلا أخي بيشوي ,,,,
أصلا انت بأسلوبك الي شرحته قد وضحت الأمور بنفسك..
ببساطة , لو اني لم أقم بكتابة int heigh = table.getRowHeight() * (row); , لظهر في كثير من الأحيان مساحة رمادية اللون نحن في غنى عنها.
شرح الأمر ببساطة أكثر //
int heigh = table.getRowHeight();
الكود السابق : يستخدم لمعرفة ارتفاع الصف الواحد, ومن خلالها سوف نستفيد في أننا سنستطيع أن نحدد ارتفاع مناسب للجدول المطلوب ككل بحيث لا تظهر عندنا مساحة رمادية اللون زائدة عن حاجتنا.
وحتى احسب ارتفاع الجدول المناسب , يجب أن اعرف ارتفاع الصف الواحد , ومن ثم أقوم بضربه في عدد الصفوف المختارة كالتالي :
tableHeigh = table.getRowHeight() * rows
ولذلك عندما قمت أخي بيشوي بكتابة الرقم 300 بدل heigh , كان هناك زيادة في حجم الجدول مقارنة بارتفاع كل صف , مما أدى لظهور المساحة الرمادية .
أتمنى أنك استوعبتني ,, وبالتوفيق
ولذلك
تم تعديل هذه المشاركة بواسطة MKSoft في 8 أغسطس 2009 في 23:14
فهمت ياأخ محمد شكراكثيراً
------------------------------------------
فى مشكلة كبيرة :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();
}
}
}
}صورة توضح الجريمة
---------------------
يا بيشوي موضوع JTable لا يمكنك التحكم فيه كما تريد
بمعنى لا تستطيع تغيير ألوان header لا تستطيع تغيير أسماءها
فكر بالموضوع جيداً
ستجد لديك مشاكل كثير من هذه النواحي
لذا أخبرتك أن الجدول يفضل أن يكون من صنعك أنت
تحياتي
يا علاء أنا دلوقتى اكتفيت بعرض الجدول فقط لا غير و لكن أنا اتحدث عن مشكلة أخرى فى المشاركة التى قبلك انت مباشرة
شكراً
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…