Advertisement
Guest User

Untitled

a guest
Oct 28th, 2016
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.28 KB | None | 0 0
  1. package main;
  2.  
  3. import java.awt.EventQueue;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.util.ArrayList;
  7. import java.util.LinkedList;
  8.  
  9. import javax.swing.JFrame;
  10. import javax.swing.JOptionPane;
  11. import javax.swing.JScrollPane;
  12. import java.awt.BorderLayout;
  13. import java.awt.Component;
  14.  
  15. import javax.swing.JPanel;
  16. import javax.swing.AbstractCellEditor;
  17. import javax.swing.JButton;
  18. import javax.swing.JTable;
  19. import javax.swing.ListSelectionModel;
  20. import javax.swing.SwingConstants;
  21. import javax.swing.table.AbstractTableModel;
  22. import javax.swing.table.DefaultTableCellRenderer;
  23. import javax.swing.table.TableCellEditor;
  24. import javax.swing.table.TableCellRenderer;
  25. import javax.swing.table.TableColumn;
  26.  
  27. public class TableTest {
  28.  
  29. private JFrame frame;
  30. private JTable table;
  31. private TableModel model;
  32. private int count = 0;
  33.  
  34. public static void main(String[] args) {
  35. EventQueue.invokeLater(new Runnable() {
  36. public void run() {
  37. try {
  38. TableTest window = new TableTest();
  39. window.frame.setVisible(true);
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. });
  45. }
  46.  
  47. public TableTest() {
  48. initialize();
  49. }
  50.  
  51. private void initialize() {
  52. frame = new JFrame();
  53. frame.setTitle("Example");
  54. frame.setBounds(100, 100, 450, 300);
  55. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  56.  
  57. JScrollPane scrollPane = new JScrollPane();
  58. frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
  59.  
  60. model = new TableModel();
  61. model.addRow(createRow());
  62. table = new JTable(model);
  63. table.setDefaultRenderer(String.class, new RowRender());
  64. // TableColumn col = table.getColumnModel().getColumn(0);
  65. // col.setCellEditor(new ButtonEditor());
  66. // col.setCellRenderer(new CellRenderer());
  67.  
  68. table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  69. scrollPane.setViewportView(table);
  70.  
  71. JPanel panel = new JPanel();
  72. frame.getContentPane().add(panel, BorderLayout.SOUTH);
  73.  
  74. JButton btnClear = new JButton("CLEAR");
  75. btnClear.addActionListener(new ActionListener() {
  76. public void actionPerformed(ActionEvent arg0) {
  77. getModel().clearHistory();
  78. }
  79. });
  80.  
  81. JButton btnCreateRow = new JButton("CREATE BUTTON ROW");
  82. btnCreateRow.addActionListener(new ActionListener() {
  83. public void actionPerformed(ActionEvent e) {
  84. getModel().addRow(createRow());
  85. }
  86. });
  87.  
  88. JButton btnCreareTextRow = new JButton("CREATE TEXT ROW");
  89. btnCreareTextRow.addActionListener(new ActionListener() {
  90. public void actionPerformed(ActionEvent arg0) {
  91. getModel().addRow(createTextRow());
  92. }
  93. });
  94. panel.add(btnCreareTextRow);
  95. panel.add(btnCreateRow);
  96. panel.add(btnClear);
  97. }
  98.  
  99. class TableModel extends AbstractTableModel {
  100.  
  101. private String[] column = { "One", "Two" };
  102.  
  103. private LinkedList<ArrayList<Object>> rows;
  104.  
  105. private static final long serialVersionUID = 1L;
  106.  
  107. TableModel() {
  108. this.rows = new LinkedList<>();
  109. }
  110.  
  111. public String getColumnName(int columnIndex) {
  112. for (int i = 0; i < column.length; i++) {
  113. if (i == columnIndex) {
  114. return column[i];
  115. }
  116. }
  117. return "";
  118. }
  119.  
  120. @Override
  121. public int getColumnCount() {
  122. return column.length;
  123. }
  124.  
  125. @Override
  126. public int getRowCount() {
  127. return rows.size();
  128. }
  129.  
  130. @Override
  131. public Object getValueAt(int rowIndex, int columnIndex) {
  132. return rows.get(rowIndex).get(columnIndex);
  133. }
  134.  
  135. public Class<?> getColumnClass(int columnIndex) {
  136. return String.class;
  137. }
  138.  
  139. void addRow(ArrayList<Object> row) {
  140. rows.addFirst(row);
  141. while (rows.size() >= 11) {
  142. rows.removeLast();
  143. }
  144. fireTableRowsInserted(0, getRowCount());
  145. }
  146.  
  147. public boolean isCellEditable(int rowIndex, int columnIndex) {
  148. if (columnIndex == 0) {
  149. return true;
  150. }
  151. return false;
  152. }
  153.  
  154. public void clearHistory() {
  155. rows.clear();
  156. fireTableDataChanged();
  157. }
  158.  
  159. }
  160.  
  161. public TableModel getModel() {
  162. return model;
  163. }
  164.  
  165. public ArrayList<Object> createRow() {
  166. ArrayList<Object> row = new ArrayList<Object>();
  167. JButton button = new JButton(count + " Click me");
  168. button.addActionListener(new ActionListener() {
  169.  
  170. @Override
  171. public void actionPerformed(ActionEvent e) {
  172. JOptionPane.showMessageDialog(frame, "Pressed");
  173. }
  174. });
  175. row.add(button);
  176. row.add("Text");
  177. count++;
  178. return row;
  179. }
  180.  
  181. public ArrayList<Object> createTextRow() {
  182. ArrayList<Object> row = new ArrayList<Object>();
  183. row.add("Text");
  184. row.add("Text");
  185. count++;
  186. return row;
  187. }
  188.  
  189. class ButtonEditor extends AbstractCellEditor implements TableCellEditor {
  190.  
  191. private static final long serialVersionUID = 1L;
  192. private JButton jButton;
  193.  
  194. public ButtonEditor() {
  195. }
  196.  
  197. public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
  198. int column) {
  199. jButton = (JButton) value;
  200. stopCellEditing();
  201. jButton.addActionListener(new ActionListener() {
  202.  
  203. @Override
  204. public void actionPerformed(ActionEvent e) {
  205. stopCellEditing();
  206. jButton.removeActionListener(this);
  207. }
  208. });
  209. return (JButton) value;
  210. }
  211.  
  212. public Object getCellEditorValue() {
  213. return jButton;
  214. }
  215.  
  216. public JButton getjButton() {
  217. return jButton;
  218. }
  219.  
  220. public void setjButton(JButton jButton) {
  221. this.jButton = jButton;
  222. }
  223. }
  224.  
  225. public class CellRenderer implements TableCellRenderer {
  226.  
  227. public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
  228. int row, int column) {
  229. return (Component) value;
  230. }
  231. }
  232.  
  233. public class RowRender extends DefaultTableCellRenderer {
  234. private static final long serialVersionUID = 1L;
  235.  
  236. public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
  237. int row, int column) {
  238.  
  239. Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
  240. setHorizontalAlignment(SwingConstants.CENTER);
  241.  
  242. return cell;
  243. }
  244. }
  245. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement