Guest User

Untitled

a guest
Nov 24th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.58 KB | None | 0 0
  1. import java.awt.*;
  2. import java.sql.*;
  3. import java.util.*;
  4. import javax.swing.*;
  5. import java.awt.event.*;
  6. import javax.swing.text.*;
  7. import javax.swing.event.*;
  8. import javax.swing.table.*;
  9. import javax.swing.plaf.basic.*;
  10.  
  11. public class GridView extends JPanel {
  12. RadioButtonUI ui = new RadioButtonUI();
  13. int pageSize = 5;
  14.  
  15. Model model = new Model();
  16. TableRowSorter sorter = new TableRowSorter(model);
  17. Box box = Box.createHorizontalBox();
  18.  
  19. public GridView() {
  20. super(new BorderLayout());
  21. JTable table = new JTable(model) {
  22. public Component prepareRenderer(TableCellRenderer tcr, int row,
  23. int column) {
  24. Component c = super.prepareRenderer(tcr, row, column);
  25. if (isRowSelected(row)) {
  26. c.setForeground(getSelectionForeground());
  27. c.setBackground(getSelectionBackground());
  28. } else {
  29. c.setForeground(getForeground());
  30. c.setBackground((row % 2 == 0) ? Color.lightGray
  31. : getBackground());
  32. }
  33. return c;
  34. }
  35. };
  36. table.setIntercellSpacing(new Dimension());
  37. table.setShowGrid(false);
  38. table.setRowSorter(sorter);
  39. showPages(10, 1);
  40.  
  41. add(new JScrollPane(table));
  42. add(box, BorderLayout.SOUTH);
  43. setPreferredSize(new Dimension(320, 240));
  44. }
  45.  
  46. private void showPages(final int itemsPerPage, final int currentPageIndex) {
  47. sorter.setRowFilter(filter(itemsPerPage, currentPageIndex - 1));
  48. ArrayList l = new ArrayList();
  49.  
  50. int startPageIndex = currentPageIndex - pageSize;
  51. if (startPageIndex <= 0)
  52. startPageIndex = 1;
  53. int maxPageIndex = (model.getRowCount() / itemsPerPage) + 1;
  54. int endPageIndex = currentPageIndex + pageSize - 1;
  55. if (endPageIndex > maxPageIndex)
  56. endPageIndex = maxPageIndex;
  57.  
  58. if (currentPageIndex > 1)
  59. l
  60. .add(createRadioButtons(itemsPerPage, currentPageIndex - 1,
  61. "Prev"));
  62. for (int i = startPageIndex; i <= endPageIndex; i++)
  63. l.add(createLinks(itemsPerPage, currentPageIndex, i - 1));
  64. if (currentPageIndex < maxPageIndex)
  65. l
  66. .add(createRadioButtons(itemsPerPage, currentPageIndex + 1,
  67. "Next"));
  68.  
  69. box.removeAll();
  70. ButtonGroup bg = new ButtonGroup();
  71. box.add(Box.createHorizontalGlue());
  72. for (JRadioButton r : l) {
  73. box.add(r);
  74. bg.add(r);
  75. }
  76. box.add(Box.createHorizontalGlue());
  77. box.revalidate();
  78. box.repaint();
  79. l.clear();
  80. }
  81.  
  82. private JRadioButton createLinks(final int itemsPerPage, final int current,
  83. final int target) {
  84. JRadioButton radio = new JRadioButton("" + (target + 1)) {
  85. protected void fireStateChanged() {
  86. ButtonModel model = getModel();
  87. if (!model.isEnabled()) {
  88. setForeground(Color.GRAY);
  89. } else if (model.isPressed() && model.isArmed()) {
  90. setForeground(Color.GREEN);
  91. } else if (model.isSelected()) {
  92. setForeground(Color.RED);
  93. }
  94. super.fireStateChanged();
  95. }
  96. };
  97. radio.setForeground(Color.BLUE);
  98. radio.setUI(ui);
  99. if (target + 1 == current) {
  100. radio.setSelected(true);
  101. }
  102. radio.addActionListener(new ActionListener() {
  103. public void actionPerformed(ActionEvent e) {
  104. showPages(itemsPerPage, target + 1);
  105. }
  106. });
  107. return radio;
  108. }
  109.  
  110. private JRadioButton createRadioButtons(final int itemsPerPage,
  111. final int target, String title) {
  112. JRadioButton radio = new JRadioButton(title);
  113. radio.setForeground(Color.BLUE);
  114. radio.setUI(ui);
  115. radio.addActionListener(new ActionListener() {
  116. @Override
  117. public void actionPerformed(ActionEvent e) {
  118. showPages(itemsPerPage, target);
  119. }
  120. });
  121. return radio;
  122. }
  123.  
  124. private RowFilter filter(final int itemsPerPage,
  125. final int target) {
  126. return new RowFilter() {
  127. public boolean include(
  128. Entry entry) {
  129. int ei = entry.getIdentifier();
  130. return (target * itemsPerPage <= ei && ei < target
  131. * itemsPerPage + itemsPerPage);
  132. }
  133. };
  134. }
  135.  
  136. public static void main(String[] args) {
  137. JFrame frame = new JFrame("Table");
  138. frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  139. frame.getContentPane().add(new GridView());
  140. frame.pack();
  141. frame.setLocationRelativeTo(null);
  142. frame.setVisible(true);
  143. }
  144. }
  145.  
  146. class RadioButtonUI extends BasicRadioButtonUI {
  147. public Icon getDefaultIcon() {
  148. return null;
  149. }
  150.  
  151. private static Dimension size = new Dimension();
  152. private static Rectangle rec1 = new Rectangle();
  153. private static Rectangle rec2 = new Rectangle();
  154. private static Rectangle rec3 = new Rectangle();
  155.  
  156. public synchronized void paint(Graphics g, JComponent c) {
  157. AbstractButton b = (AbstractButton) c;
  158. ButtonModel model = b.getModel();
  159. Font f = c.getFont();
  160. g.setFont(f);
  161. FontMetrics fm = c.getFontMetrics(f);
  162.  
  163. Insets i = c.getInsets();
  164. size = b.getSize(size);
  165. rec1.x = i.left;
  166. rec1.y = i.top;
  167. rec1.width = size.width - (i.right + rec1.x);
  168. rec1.height = size.height - (i.bottom + rec1.y);
  169. rec2.x = rec2.y = rec2.width = rec2.height = 0;
  170. rec3.x = rec3.y = rec3.width = rec3.height = 0;
  171.  
  172. String text = SwingUtilities.layoutCompoundLabel(c, fm, b.getText(),
  173. null, b.getVerticalAlignment(), b.getHorizontalAlignment(), b
  174. .getVerticalTextPosition(), b
  175. .getHorizontalTextPosition(), rec1, rec2, rec3, 0);
  176.  
  177. if (c.isOpaque()) {
  178. g.setColor(b.getBackground());
  179. g.fillRect(0, 0, size.width, size.height);
  180. }
  181. if (text == null)
  182. return;
  183. g.setColor(b.getForeground());
  184. if (!model.isSelected() && !model.isPressed() && !model.isArmed()
  185. && b.isRolloverEnabled() && model.isRollover()) {
  186. g.drawLine(rec1.x, rec1.y + rec1.height, rec1.x + rec1.width,
  187. rec1.y + rec1.height);
  188. }
  189. View v = (View) c.getClientProperty(BasicHTML.propertyKey);
  190. if (v != null) {
  191. v.paint(g, rec3);
  192. } else {
  193. paintText(g, b, rec3, text);
  194. }
  195. }
  196. }
  197.  
  198. class Model extends DefaultTableModel {
  199. Model() {
  200. JTable table = new JTable(this);
  201. addColumn("Name");
  202. addColumn("Address");
  203. try {
  204. Class.forName("com.mysql.jdbc.Driver").newInstance();
  205. Connection con = DriverManager.getConnection(
  206. "jdbc:mysql://localhost:3306/register", "root", "root");
  207. String query = "select * from data";
  208. Statement st = con.createStatement();
  209. ResultSet rs = st.executeQuery(query);
  210.  
  211. while (rs.next()) {
  212. String name = rs.getString("name");
  213. String address = rs.getString("address");
  214. addRow(new Object[] { name, address });
  215. }
  216. } catch (Exception e) {
  217. }
  218. }
  219. }
Add Comment
Please, Sign In to add comment