PDA

View Full Version : اضافه کردن دکمه و چک باکس در جدول



sn2hsn2h
دوشنبه 24 فروردین 1394, 15:02 عصر
سلام دوستان
من چند روزه تازه شروع کردم به یادگیری جاوا حالا با استفاده از swing در جاوا میخوام یه دکمه و چک باکس رو در جدول بزارم ولی هرکار کردم نتونستم.

دوستان میشه یه برنامه بسیار بسیار ساده و ترجیحا با کمترین خط کد بهم کمک کنین.
حتی نمیخوام دکمه و چک باکس کاری انجام بدن.

فقط نحوه اضافه کردنشون رو به jtable رو بگین

ممنونم
خیلی واجبه:ناراحت::ناراحت:

اینم کد من. لطفا طبق همین کد بگین.

public class test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setBounds(100, 100, 600, 400);
frame.setDefaultCloseOperation(3);
JTable table = new JTable(5, 5);


JButton button = new JButton("BTN");
JCheckBox checkBox = new JCheckBox("CHB");









frame.add(table);
frame.setVisible(true);
}
}

محمد فدوی
دوشنبه 24 فروردین 1394, 18:58 عصر
سلام. Swing برای نمایش دادن سلول‌های هر سطون از یک جدول از یک شیء TableCellRenderer و برای ویرایش سلول‌های هر سطون جدول از یه شیء TableCellEditor استفاده می‌کنه. برای اینکه یه کامپوننت شخصی‌سازی شده برای نمایش سلول‌های مورد نظرتون طراحی کنید باید از پیاده‌سازی TableCellRenderer استفاده کنید. مثلا اینجا (http://stackoverflow.com/questions/13833688/adding-jbutton-to-jtable) رو ببینید.
اما Swing برای حالات خاصی Rendererها و Editorهای از پیش تعریف شده‌ای در نظر گرفته. مثلا اگه بدونه نوع داده‌ی داخل یه سلول Booleanئه از یه JCheckBox برای ویرایشش استفاده می‌کنه. یا مثلا اگه بدونه Integerئه از یه فیلدمتن مناسب برای اعداد برای ویرایشش استفاده می‌کنه... ولی متاسفانه خود Swing بصورت پویا تشخیص نمی‌ده داده‌ی داخل سلول از چه نوعیه تا ویرایشگر مناسبش رو استفاده کنه بلکه ما باید خودمون بش بگیم... فکر می‌کنم اگه این مثال رو ببینی بهتر به جواب برسی:

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLocationByPlatform(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

String[] columns = {"STRING", "INTEGER", "BOOLEAN"};
Object[][] data = {
{"Tehran", 2, true},
{"Esfahan", 19, false},
{"Tabriz", 9, false},
{"Shiraz", 42, true}
};

// Our own Table Model:
DefaultTableModel model = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex) {
case 0: return String.class;
case 1: return Integer.class;
case 2: return Boolean.class;
default: return Object.class;
}
}
};
model.setDataVector(data, columns);

JTable table = new JTable(model);
frame.setContentPane(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
}

بعد از اجرا کردن این برنامه می‌بینی که ستون «INTEGER» جوری برنامه‌ریزی شده که فقط مقادیر مجاز عددی رو می‌پذیره و ستون سوم یعنی «BOOLEAN» توسط یک JCheckBox ویرایش می‌شه.
موفق باشی.

ahmad.mo74
دوشنبه 24 فروردین 1394, 22:18 عصر
سلام

مثال های کامل تر :

http://stackoverflow.com/questions/1475543/how-to-add-button-in-a-row-of-jtable-in-swing-java
http://stackoverflow.com/questions/2069641/adding-buttons-inside-cell-of-jtable-along-with-data
http://www.java2s.com/Code/Java/Swing-Components/ButtonTableExample.htm

sn2hsn2h
سه شنبه 25 فروردین 1394, 11:36 صبح
سلام. Swing برای نمایش دادن سلول‌های هر سطون از یک جدول از یک شیء TableCellRenderer و برای ویرایش سلول‌های هر سطون جدول از یه شیء TableCellEditor استفاده می‌کنه. برای اینکه یه کامپوننت شخصی‌سازی شده برای نمایش سلول‌های مورد نظرتون طراحی کنید باید از پیاده‌سازی TableCellRenderer استفاده کنید. مثلا اینجا (http://stackoverflow.com/questions/13833688/adding-jbutton-to-jtable) رو ببینید.
اما Swing برای حالات خاصی Rendererها و Editorهای از پیش تعریف شده‌ای در نظر گرفته. مثلا اگه بدونه نوع داده‌ی داخل یه سلول Booleanئه از یه JCheckBox برای ویرایشش استفاده می‌کنه. یا مثلا اگه بدونه Integerئه از یه فیلدمتن مناسب برای اعداد برای ویرایشش استفاده می‌کنه... ولی متاسفانه خود Swing بصورت پویا تشخیص نمی‌ده داده‌ی داخل سلول از چه نوعیه تا ویرایشگر مناسبش رو استفاده کنه بلکه ما باید خودمون بش بگیم... فکر می‌کنم اگه این مثال رو ببینی بهتر به جواب برسی:.

دوست عزیز ممنونم از توضیحاتتون.
1: دوست عزیز من هرکاری کردم نتونستم یه دکمه اضاف کنم. میشه اونم یه راهنمایی بفرمایی؟

2: میشه با استفاده شی های TableCellRenderer و TableCellEditor و خودتون یه کد ساده را واسم مثال بزنید آخه واقعا اون مثال هایی که لینکشون رو دادین من اصلا متوجه نمیشم. خواهش میکنم یه کد خیلی خیلی راحت واسم بزنید تا متوجه بشم. (لطفا اگه میشه بدون کلاس داخلی باشه تا بهتر متوجه بشم و اگه میشه هرجایی میخواهین شی ای رو بسازین فقط new نکنین و تعریف شی را به صورت کامل بنویسین تا من بهتر متوجه بشم.)

3: یه خواهش دیگه دارم لطفا کدی رو که میزنید اگه میشه خط به خط یه توضیح مختصری بدین تا متوجه بشم هر خط دقیقا چه کاری انجام میده.

واقعا ممنون میشم اگه کمکم کنید.:ناراحت::ناراحت:

sn2hsn2h
سه شنبه 25 فروردین 1394, 11:39 صبح
سلام

مثال های کامل تر :

http://stackoverflow.com/questions/1475543/how-to-add-button-in-a-row-of-jtable-in-swing-java
http://stackoverflow.com/questions/2069641/adding-buttons-inside-cell-of-jtable-along-with-data
http://www.java2s.com/Code/Java/Swing-Components/ButtonTableExample.htm


ممنونم دوست عزیز.
من خودم سرچ میکردم به این لینکها هم رفتم ولی چون من تازه جاوا رو شروع کردم(چند روزه) و اصلا برنامه نویسی هم نکردم و هیچ سابقه ای هم نداشتم متوجه این مثال ها نمیشم.

اگه میشه خودتون یه کد ساده بزنید با توضیح واقعا ممنونتون میشم.

با تشکر از شما.

محمد فدوی
سه شنبه 25 فروردین 1394, 15:32 عصر
2: میشه با استفاده شی های TableCellRenderer و TableCellEditor و خودتون یه کد ساده را واسم مثال بزنید آخه واقعا اون مثال هایی که لینکشون رو دادین من اصلا متوجه نمیشم.
برای پاسخ دادن به سؤالات توی انجمن باید تا جای ممکن کد کوتاهی قرار بدیم تا حتی‌المقدور قابل فهم باشه خصوصا برای افرادی که ممکنه در آینده بش رجوع کنن. در هر صورت اگر به تازگی جاوا رو شروع کردید به طوری‌که درک کلاس‌های داخلی و امثالهم (که در جاوا بسیار پرکاربردن) مشکل دارید بهتره مدتی رو صرف تسلط به سینتکس جاوا کنید و بعد وارد مبحثی مثل طراحی رابط‌کاربری بشید. در مورد سؤالتون فقط یک‌راه وجود نداره و باتوجه به نیازتون سطح پیاده‌سازی مجدد کلاس‌ها رو باید تعیین کنید. اینجا چون فقط قراره Editor و Renderer رو برای یک ستون تغییر بدیم چیز زیادی نیاز نداریم به جز یه پیاده‌سازی ساده از TableCellEditor و TableCellRenderer. در مورد TableCellRenderer مشکلی وجود نداره چون فقط یک متد داره ولی در مورد TableCellEditor متدهای بیشتری وجود داره که باید پیاده‌سازی بشن. که برای سادگی کار کلاسمون رو از DefaultCellEditor ارث‌بری می‌کنیم تا فقط دو متد اصلی و مهم نیاز به Override شدن داشته باشن... این کد رو براتون نوشتم. ما در جدول دو ستون داریم؛ یکی برای نگه‌داری نام میوه (از نوع String) و یکی برای نگه‌داری رنگ میوه (از نوع java.awt.Color).
خیلی جاها مشابه کد قبلیه. فقط چیز دیگه‌ای که اینجا نیاز داریم اینه که بعد از ساختن شیء جدول، Editor و Renderer مربوط به ستون رنگ(Color) رو به چیزی که خودمون دوست داریم تغییر بدیم (خطوط ۴۴، ۴۵ و ۴۶)، چون Swing هیچ ویرایشگر و نمایشگر پیشفرضی برای اشیاءی از نوع java.awt.Color در نظر نگرفته.
چیز پیچیده‌ای توش نیست ولی درنهایت چه در مورد این کد و چه در مورد قبلی اگر سؤالی داشتید بپرسید تا من یا دوستان دیگه بتون کمک کنیم:
import java.awt.Color;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.AbstractCellEditor;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;

public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLocationByPlatform(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

String[] columns = {"Fruit", "Color"};
Object[][] data = {
{"Apple", Color.YELLOW},
{"Orange", Color.ORANGE},
{"Cucumber", Color.GREEN.darker()},
{"Cherry", Color.RED.darker()}
};

DefaultTableModel model = new DefaultTableModel() {
@Override
public Class<?> getColumnClass(int columnIndex) {
switch(columnIndex) {
case 0: return String.class;
case 1: return Color.class;
default: return Object.class;
}
}
};
model.setDataVector(data, columns);

JTable table = new JTable(model);
TableColumn colorColumn = table.getColumn("Color");
colorColumn.setCellEditor(new ColorEditor());
colorColumn.setCellRenderer(new ColorRenderer());
frame.setContentPane(new JScrollPane(table));
frame.pack();
frame.setVisible(true);
}
}

class ColorRenderer extends JLabel implements TableCellRenderer {
public ColorRenderer() { setOpaque(true); }
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
setBackground((Color)value);
return this;
}
}

class ColorEditor extends AbstractCellEditor implements TableCellEditor, ActionListener {
private final JButton btnEditor;

@SuppressWarnings("LeakingThisInConstructor")
public ColorEditor() {
btnEditor = new JButton();
btnEditor.addActionListener(this);
}

@Override
public Object getCellEditorValue() { return btnEditor.getBackground(); }

@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
btnEditor.setBackground((Color)value);
return btnEditor;
}

@Override
public void actionPerformed(ActionEvent e) {
Color newColor = JColorChooser.showDialog(null , "Choose Fruit Color", btnEditor.getBackground());
if(newColor != null) {
btnEditor.setBackground(newColor);
}
}
}

درنهایت اینم بگم که بهتره به خوندن منابع زبان اصلی عادت کنید. چون دیر یا زود بهشون نیاز پیدا خواهید کرد.

sn2hsn2h
سه شنبه 25 فروردین 1394, 16:02 عصر
آقای محمد فدوی (http://barnamenevis.org/member.php?145812-%D9%85%D8%AD%D9%85%D8%AF-%D9%81%D8%AF%D9%88%DB%8C) واقعا ممنونم از اینکه اینقدر بهم کمک میکنین.
مهندس این برنامه خیلی بیشتر از بزرگتر از اون چیزیه که من نیاز دارم. حتی خیلی هم طول میکشه تا یادش بگیرم.
متاسفانه من هنوز مشکلم حل نشده.
بهتره با یه شکل منظورما برسونم.

130327

دوست عزیز هدف من اینه که فقط تو یه سری سلول ها دکمه یا چک باکس قرار بدم.
مثلا همونطور که تو عکی میبینید من میخوام فقط تو 2 تا سلول پر شده با رنگ آبی دکمه باشه و تو 2 تا سلولی که با چک باکس مشخص کردم چک باکس یا کمبوباکس بذارم. فقط همین.
حتی نمیخوام دکمه ها و چک باکس ها کار خاصی انجام بدن.

توضیح اینکه(میشه که دکمه هایی که تو جدول قرار میگیرن دقیقا همشکل با همین دکمه ها باشه که تو فریم ها میذاریم؟ اگه اونطوری میشه پس اونطوری یادم بدین لطفا)

بازم از صبر و شکیبایی شما تشکر میکنم.

sn2hsn2h
یک شنبه 06 اردیبهشت 1394, 15:08 عصر
دوستان خواهش میکنم یکی کمکم کنه :ناراحت::ناراحت::ناراحت::نار حت::ناراحت:

محمد فدوی
یک شنبه 06 اردیبهشت 1394, 21:37 عصر
توضیح اینکه(میشه که دکمه هایی که تو جدول قرار میگیرن دقیقا همشکل با همین دکمه ها باشه که تو فریم ها میذاریم؟ اگه اونطوری میشه پس اونطوری یادم بدین لطفا)
آره خیلی ساده‌ست. کافیه توی خط ۷۶ که رنگ پس‌زمینه‌ی JButton رو تغییر دادم شما این‌کار رو نکنید و مثلا یه متن دلخواه داخلش قرار بدید. اینجوری شیء JButton مثل اون چیزی که توی حالت‌های عادی Swing می‌بینید نمایش داده می‌شه.

در مورد اینی هم که می‌خواید فقط برای بعضی از سلول‌ها JButton رو نمایش بدید توجه کنید که متد getTableCellEditorComponent (خط ۷۵) و getTableCellRendererComponent (خط ۵۶) دوتا آرگومان row و column رو هم دریافت می‌کنن که مکان دقیق سلولی که براش تقاضای Editor یا Renderer شده رو مشخص می‌کنن. شما می‌تونی با چک کردن این مقادیر برای سلول‌های دلخواهت (مثلا سلول واقع در سطر ۲ و سطون ۴) یه Editor و Renderer دلخواه رو return کنی و برای سلول‌های دیگه Editor و Renderer مربوط به خودشون.
پیشنهاد می‌کنم یه مقدار در مورد عملکرد JTable برای تخصیص Editor و Renderer سلول‌ها کمی تحقیق کنید. با یه جستجوی ساده توی گوگل تعداد زیادی مثال ساده و پیچیده پیدا می‌کنید.

موفق باشید.

ahmad.mo74
یک شنبه 06 اردیبهشت 1394, 22:45 عصر
سلام

من نمیدونم مشکل شما کجاست!

مثالی که آقای فدوی زدن و اون لینک ها همشون کارتونو را میندازه، ولی به هر حال یه چیزی نوشتم که راحت باشه :


import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;


/**
* @author avb
*/
public class TableButtonExample extends JFrame {


public TableButtonExample() {
super("TableButton Example");
DefaultTableModel model = new DefaultTableModel();
model.addColumn("Column 1");
model.addColumn("Column 2");
model.addRow(new Object[]{"Row 1", "Delete"});
model.addRow(new Object[]{"Row 2", "Delete"});
JTable table = new JTable(model);
TableButton deleteButton = new TableButton(table, 1);
deleteButton.addActionListener((event, row, column) -> System.out.println("delete : row = " + row + ", column = " + column));
JScrollPane scroll = new JScrollPane(table);
add(scroll);
setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE);
setSize(400, 400);
setLocationRelativeTo(null);
pack();
}


public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAn dFeelClassName());
EventQueue.invokeLater(() -> new TableButtonExample().setVisible(true));
}


}


کلاس TableButton :


import javax.swing.*;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumnModel;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;


/**
* @author avb
*/
public class TableButton {


private JTable table;
private int column;
private List<TableButtonListener> listeners = new ArrayList<>();


public TableButton(JTable table, int column) {
this.table = table;
this.column = column;
TableColumnModel columnModel = table.getColumnModel();
columnModel.getColumn(column).setCellRenderer(new ButtonRenderer());
columnModel.getColumn(column).setCellEditor(new ButtonEditor(new JCheckBox()));
}


class ButtonRenderer extends JButton implements TableCellRenderer {


public ButtonRenderer() {
setOpaque(true);
}


@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(UIManager.getColor("Button.background"));
}
if (value == null) {
setText("");
setIcon(null);
} else if (value instanceof Icon) {
setText("");
setIcon((Icon) value);
} else {
setText(value.toString());
setIcon(null);
}
return this;
}


}


class ButtonEditor extends DefaultCellEditor {


private JButton button;
private Object value;


public ButtonEditor(JCheckBox checkBox) {
super(checkBox);
button = new JButton();
button.setOpaque(true);
button.addActionListener(e -> {
int row = table.convertRowIndexToModel(table.getEditingRow() );
fireEditingStopped();
fireActionPerformed(e, row, column);
});
}


@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (isSelected) {
button.setForeground(table.getSelectionForeground( ));
button.setBackground(table.getSelectionBackground( ));
} else {
button.setForeground(table.getForeground());
button.setBackground(table.getBackground());
}
if (value == null) {
button.setText("");
button.setIcon(null);
} else if (value instanceof Icon) {
button.setText("");
button.setIcon((Icon) value);
} else {
button.setText(value.toString());
button.setIcon(null);
}
this.value = value;
return button;
}


@Override
public Object getCellEditorValue() {
return value;
}


}


public void addActionListener(TableButtonListener listener) {
listeners.add(listener);
}


public void removeActionListener(TableButtonListener listener) {
listeners.remove(listener);
}


public void fireActionPerformed(ActionEvent event, int row, int column) {
for (TableButtonListener listener : listeners) {
listener.actionPerformed(event, row, column);
}
}


}


TableButtonListener :


import java.awt.event.ActionEvent;
import java.util.EventListener;


/**
* @author avb
*/
public interface TableButtonListener extends EventListener {


void actionPerformed(ActionEvent event, int row, int column);


}


شما به این 2 تا کلاس کاری نداشته باشید و فقط به برنامتون اضافش کنید (فکر کنید توی خود swing همچین کلاسایی هست).

تمام کاری که شما باید انجام بدید همین چند خطه :


TableButton deleteButton = new TableButton(table, 1);
deleteButton.addActionListener(new TableButtonListener() {
@Override
public void actionPerformed(ActionEvent event, int row, int column) {
//handle event
}
});

sn2hsn2h
دوشنبه 14 اردیبهشت 1394, 08:12 صبح
دوستان ممنون از لطفتون ولی بازم هیچکدام مشکل بنده رو حل نکرد. من تمام برنامه های شما را تست و اجرا کردم.
فکر نکنم کسی تو این گروه بلد باشه این برنامه ای رو که من گفتم بنویسه. چون اون چیزی که من مشکل دارم رو کسی بلد نیست.

عزیزان من هرکاری کردم نتونستم برنامه ای بنویسم که تو یه جدول هم دکمه بزارم هم چک باکس.
یعنی مثلا جدولی با 5 ستون که ستون مثلا دوم چک باکس باشن و ستون آخر هم دکمه. یعنی هم دکمه داشته باشه و هم چک باکس.

خواهش میکنم یکی این رو بهم یاد بده هرچه سریعتر.

sn2hsn2h
دوشنبه 14 اردیبهشت 1394, 08:20 صبح
سلام

من نمیدونم مشکل شما کجاست!

[/JAVA]


دوست عزیز مشکل من اینه که نمیتونم کدی بزنم که یه جدول که هم یه ستونش دکمه باشه و یه ستونش چک باکس باشه. یعنی تو یه جدول هر دو رو حتما داشته باشه.
شما و دو.ستان عزیزی که زحمت میکشن و کدی رو که میدین فقط و فقط یه ستونش دکمه هست ولی ستون چک باکس تو همون جدول وجود نداره.

دوستان من کد راهنما یا نمونه نمیخوام.
اگه میتونین لطف کنین و خودتون یه کدی رو بزنین که کار من رو حل کنه. الان چند روزه که به این فروم اومدم ولی متاسفانه کسی مشکل من رو حل نکرده(البته شاید هم کسی بلد نبوده)

با تشکر

ahmad.mo74
دوشنبه 14 اردیبهشت 1394, 10:48 صبح
TableCheckBox :


import javax.swing.*;
import javax.swing.table.TableModel;
import java.util.ArrayList;
import java.util.List;


/**
* @author avb
*/
public class TableCheckBox implements TableCellListener {


private JTable table;
private int column;
private List<TableCheckBoxListener> listeners = new ArrayList<>();


public TableCheckBox(JTable table, int column) {
this.table = table;
this.column = column;
table.getColumnModel().getColumn(column).setCellRe nderer(table.getDefaultRenderer(Boolean.class));
TableCellListener.register(table, this);
}


@Override
public void onClick(int row, int column) {
fireStateChanged(row, column);
}


public void addItemListener(TableCheckBoxListener listener) {
listeners.add(listener);
}


public void removeItemListener(TableCheckBoxListener listener) {
listeners.remove(listener);
}


public void fireStateChanged(int row, int column) {
if (row < 0 || this.column != column) {
return;
}
TableModel model = table.getModel();
Object o = model.getValueAt(row, column);
if (o instanceof Boolean) {
boolean b = !(boolean) o;
model.setValueAt(b, row, column);
for (TableCheckBoxListener listener : listeners) {
listener.stateChanged(b, row, column);
}
}
}


}


TableCheckBoxListener :


public interface TableCheckBoxListener {


void stateChanged(boolean isChecked, int row, int column);


}


TableCellListener :


import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;


/**
* @author avb
*/
public interface TableCellListener {


void onClick(int row, int column);


static void register(JTable table, TableCellListener listener) {
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
Point point = e.getPoint();
int row = table.rowAtPoint(point);
int col = table.columnAtPoint(point);
if (row >= 0 && col >= 0) {
listener.onClick(row, col);
}
}
});
}


}


Test :


import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;


/**
* @author avb
*/
public class Test extends JFrame {


public Test() {
super("JTable Example");
DefaultTableModel model = new DefaultTableModel();
model.addColumn("Column 1");
model.addColumn("Column 2");
model.addColumn("Column 3");
model.addRow(new Object[]{"Row 1", false, "Delete"});
model.addRow(new Object[]{"Row 2", false, "Delete"});
JTable table = new JTable(model);
TableCheckBox checkBox = new TableCheckBox(table, 1);
checkBox.addItemListener((isChecked, row, column)
-> System.out.println((isChecked ? "checked" : "unchecked") + " : row = " + row + ", column = " + column));
TableButton deleteButton = new TableButton(table, 2);
deleteButton.addActionListener((e, row, column) -> System.out.println("delete : row = " + row + ", column = " + column));
JScrollPane scroll = new JScrollPane(table);
add(scroll);
setDefaultCloseOperation(WindowConstants.EXIT_ON_C LOSE);
setSize(400, 400);
setLocationRelativeTo(null);
pack();
}


public static void main(String[] args) throws Exception {
UIManager.setLookAndFeel(UIManager.getSystemLookAn dFeelClassName());
EventQueue.invokeLater(() -> new Test().setVisible(true));
}


}

sn2hsn2h
دوشنبه 14 اردیبهشت 1394, 12:46 عصر
دوست عزیزم ahmad.mo74 (http://barnamenevis.org/member.php?337969-ahmad-mo74)

ممنونم
مشکلم حل شد الان

واقعا دستتون درد نکنه :تشویق::خجالت:

ahmad.mo74
دوشنبه 14 اردیبهشت 1394, 20:56 عصر
دوست عزیزم ahmad.mo74 (http://barnamenevis.org/member.php?337969-ahmad-mo74)ممنونم
مشکلم حل شد الان

واقعا دستتون درد نکنه :تشویق::خجالت:

ممنون، خوشحالم که مشکلت حل شد.