Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.49 KB | None | 0 0
  1. package testrepaint;
  2.  
  3. public class Test {
  4.  
  5. private static JFrame frame;
  6.  
  7. private static void createAndShowGUI() {
  8. frame = new JFrame("Test");
  9. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  10.  
  11. run();
  12.  
  13. frame.pack();
  14. frame.setVisible(true);
  15. }
  16.  
  17. private static void run() {
  18.  
  19. List<CustomerOrder> customerOrders = new ArrayList<>();
  20. customerOrders.add(new CustomerOrder(15, 60.0f));
  21. customerOrders.add(new CustomerOrder(16, 280.0f));
  22. customerOrders.add(new CustomerOrder(17, 150.53f));
  23. customerOrders.add(new CustomerOrder(18, 280.0f));
  24.  
  25. new JDViewCustomer(frame, true, customerOrders).setVisible(true);
  26. }
  27.  
  28. public static void main(String[] args) {
  29. SwingUtilities.invokeLater(new Runnable() {
  30. public void run() {
  31. createAndShowGUI();
  32. }
  33. });
  34. }
  35. }
  36.  
  37. package testrepaint;
  38.  
  39. public class JDViewCustomer extends javax.swing.JDialog {
  40.  
  41. private static final long serialVersionUID = 1L;
  42.  
  43. private static final ExecutorService SINGLE_THREAD_POOL = Executors.newSingleThreadExecutor();
  44.  
  45. private JPanel jPanelCustomerOrders;
  46. private JPanel panelContainingTheOtherPanels;
  47. private JPanel panelAbaixoDeCustomerOrders;
  48. private JPanel panelContendoOsPedidos;
  49.  
  50. private final List<CustomerOrder> customerOrders;
  51. private JPanel panelTituloPedidos;
  52. private JLabel lblPedidos;
  53.  
  54. private JTable tableOrders;
  55. private JPanel panelPagination;
  56. private JButton btnPrevious;
  57. private JButton btnNext;
  58. private JLabel lblPageSelection;
  59.  
  60. private int currentPage = 1;
  61. private int maxPage = 3;
  62.  
  63. public JDViewCustomer(java.awt.Frame parent, boolean modal, List<CustomerOrder> customerOrders) {
  64. super(parent, modal);
  65. this.customerOrders = new ArrayList<>(Objects.requireNonNull(customerOrders));
  66.  
  67. getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
  68.  
  69. panelContainingTheOtherPanels = new JPanel();
  70. panelContainingTheOtherPanels.setLayout(new BoxLayout(panelContainingTheOtherPanels, BoxLayout.Y_AXIS));
  71. getContentPane().add(panelContainingTheOtherPanels);
  72.  
  73. layoutCustomerOrdersSection();
  74. updateCustomerOrdersTable();
  75.  
  76. updateCurrentPageTextField();
  77. toggleButtonsPreviousAndNext();
  78.  
  79. initComponents();
  80. }
  81.  
  82. private void layoutCustomerOrdersSection() {
  83.  
  84. jPanelCustomerOrders = new JPanel();
  85. jPanelCustomerOrders.setBackground(new Color(255, 255, 255));
  86. panelContainingTheOtherPanels.add(jPanelCustomerOrders);
  87. jPanelCustomerOrders.setLayout(new BoxLayout(jPanelCustomerOrders, BoxLayout.Y_AXIS));
  88.  
  89.  
  90. panelAbaixoDeCustomerOrders = new JPanel();
  91. panelAbaixoDeCustomerOrders.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
  92. jPanelCustomerOrders.add(panelAbaixoDeCustomerOrders);
  93. panelAbaixoDeCustomerOrders.setLayout(new BoxLayout(panelAbaixoDeCustomerOrders, BoxLayout.Y_AXIS));
  94.  
  95. panelTituloPedidos = new JPanel();
  96. panelAbaixoDeCustomerOrders.add(panelTituloPedidos);
  97. panelTituloPedidos.setBorder(new LineBorder(new Color(0, 0, 0), 1, true));
  98. panelTituloPedidos.setBackground(Color.LIGHT_GRAY);
  99.  
  100. lblPedidos = new JLabel("Pedidos");
  101. panelTituloPedidos.add(lblPedidos);
  102.  
  103. panelContendoOsPedidos = new JPanel();
  104. panelContendoOsPedidos.setBorder(new CompoundBorder(new LineBorder(new Color(0, 0, 0), 1, true), new EmptyBorder(10, 10, 10, 10)));
  105. panelContendoOsPedidos.setBackground(Color.WHITE);
  106. panelAbaixoDeCustomerOrders.add(panelContendoOsPedidos);
  107. panelContendoOsPedidos.setLayout(new BoxLayout(panelContendoOsPedidos, BoxLayout.Y_AXIS));
  108.  
  109. panelPagination = new JPanel();
  110. panelAbaixoDeCustomerOrders.add(panelPagination);
  111.  
  112. addPaginationComponentsToPaginationPanel();
  113. }
  114.  
  115. private void addPaginationComponentsToPaginationPanel() {
  116. btnPrevious = new JButton("<");
  117. btnPrevious.addActionListener(new ActionListener() {
  118. public void actionPerformed(ActionEvent e) {
  119. performButtonPrevious(e);
  120. }
  121. });
  122. btnPrevious.setFont(new Font("Tahoma", Font.BOLD, 11));
  123. panelPagination.add(btnPrevious);
  124.  
  125. lblPageSelection = new JLabel("0");
  126. panelPagination.add(lblPageSelection);
  127.  
  128. btnNext = new JButton(">");
  129. btnNext.addActionListener(new ActionListener() {
  130. public void actionPerformed(ActionEvent e) {
  131. performButtonNext(e);
  132. }
  133. });
  134. btnNext.setFont(new Font("Tahoma", Font.BOLD, 11));
  135. panelPagination.add(btnNext);
  136. }
  137.  
  138. private void performButtonPrevious(ActionEvent e) {
  139.  
  140. if (currentPage > 1) {
  141. currentPage -= 1;
  142. updateCurrentPageTextField();
  143. }
  144.  
  145. toggleButtonsPreviousAndNext();
  146.  
  147. loadCustomerOrders();
  148. }
  149.  
  150. private void performButtonNext(ActionEvent e) {
  151. if (currentPage < maxPage) {
  152. currentPage += 1;
  153. updateCurrentPageTextField();
  154. }
  155.  
  156. toggleButtonsPreviousAndNext();
  157.  
  158. loadCustomerOrders();
  159. }
  160.  
  161. private void loadCustomerOrders() {
  162. LoadCustomerOrdersWorker worker = new LoadCustomerOrdersWorker(customerOrders, this);
  163. SINGLE_THREAD_POOL.execute(worker);
  164. }
  165.  
  166. private void toggleButtonsPreviousAndNext() {
  167. togglePreviousButton();
  168. toggleNextButton();
  169. }
  170.  
  171. private void togglePreviousButton() {
  172. btnPrevious.setEnabled(currentPage > 1);
  173. }
  174.  
  175. private void toggleNextButton() {
  176. btnNext.setEnabled(currentPage < maxPage);
  177. }
  178.  
  179. private void updateCurrentPageTextField() {
  180. lblPageSelection.setText(String.valueOf(currentPage));
  181. }
  182.  
  183. private void updateCustomerOrdersTable() {
  184.  
  185. TableModel tableModel = instantiateAbstractTableModel();
  186.  
  187. tableOrders = new JTable(tableModel) {
  188. private static final long serialVersionUID = 1L;
  189.  
  190. public Dimension getPreferredScrollableViewportSize() {
  191. return getPreferredSize();
  192. }
  193. };
  194.  
  195. centralizeTextInTableCells();
  196.  
  197. //tableOrders.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  198. TableColumnModel colModel = tableOrders.getColumnModel();
  199. colModel.getColumn(2).setPreferredWidth(80);
  200. colModel.getColumn(3).setPreferredWidth(250);
  201.  
  202. // Disables manual reordering of columns.
  203. tableOrders.getTableHeader().setReorderingAllowed(false);
  204.  
  205. JScrollPane scrollPane = new JScrollPane(tableOrders);
  206. panelContendoOsPedidos.add(scrollPane);
  207. }
  208.  
  209. private AbstractTableModel instantiateAbstractTableModel() {
  210. return new AbstractTableModel() {
  211. private static final long serialVersionUID = 1L;
  212.  
  213. @Override
  214. public boolean isCellEditable(int rowIndex, int columnIndex) {
  215. return false;
  216. }
  217.  
  218. @Override
  219. public int getRowCount() {
  220. return customerOrders.size();
  221. }
  222.  
  223. @Override
  224. public int getColumnCount() {
  225. return 5;
  226. }
  227.  
  228. @Override
  229. public String getColumnName(int column) {
  230. switch(column) {
  231. case 0: return "Status";
  232. case 1: return "Número";
  233. case 4: return "Total";
  234. default: return "";
  235. }
  236. }
  237.  
  238. @Override
  239. public Object getValueAt(int rowIndex, int columnIndex) {
  240. CustomerOrder customerOrder = customerOrders.get(rowIndex);
  241. switch(columnIndex) {
  242. case 0: return customerOrder;
  243. case 1: return "#" + String.valueOf(customerOrder.getNumber());
  244. case 4: return String.format("%.2f", customerOrder.getTotal());
  245. default: return "";
  246. }
  247. }
  248.  
  249. @Override
  250. public Class<?> getColumnClass(int columnIndex) {
  251. switch(columnIndex) {
  252. case 0: return CustomerOrder.class;
  253. case 1: return String.class;
  254. case 4: return String.class;
  255. default: return Object.class;
  256. }
  257. }
  258. };
  259. }
  260.  
  261. private void centralizeTextInTableCells() {
  262. DefaultTableCellRenderer stringCellRenderer = (DefaultTableCellRenderer)tableOrders.getDefaultRenderer(String.class);
  263. stringCellRenderer.setHorizontalAlignment(JLabel.CENTER);
  264. tableOrders.setDefaultRenderer(String.class, stringCellRenderer);
  265. }
  266.  
  267. private void initComponents() {
  268.  
  269. setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
  270. setTitle("Ver Cliente");
  271.  
  272. pack();
  273.  
  274. // Para centralizar o JDialog em relação a seu parent.
  275. setLocationRelativeTo(getParent());
  276.  
  277. }
  278. }
  279.  
  280. package testrepaint;
  281.  
  282. public class LoadCustomerOrdersWorker extends SwingWorker<Void, Void> {
  283.  
  284. private final List<CustomerOrder> customerOrders;
  285. private final JDViewCustomer jDialogViewCustomer;
  286.  
  287. public LoadCustomerOrdersWorker(List<CustomerOrder> customerOrders, JDViewCustomer jDialogViewCustomer) {
  288. this.customerOrders = customerOrders;
  289. this.jDialogViewCustomer = jDialogViewCustomer;
  290. }
  291.  
  292. @Override
  293. protected Void doInBackground() throws Exception {
  294.  
  295. this.customerOrders.clear();
  296. Thread.sleep(300);
  297. this.customerOrders.add(new CustomerOrder(15, 60.0f));
  298. Thread.sleep(300);
  299. this.customerOrders.add(new CustomerOrder(16, 280.0f));
  300. Thread.sleep(300);
  301. this.customerOrders.add(new CustomerOrder(17, 150.53f));
  302. Thread.sleep(300);
  303. this.customerOrders.add(new CustomerOrder(18, 280.0f));
  304. Thread.sleep(300);
  305. this.customerOrders.add(new CustomerOrder(19, 280.0f));
  306. Thread.sleep(300);
  307.  
  308. return null;
  309. }
  310.  
  311. @Override
  312. protected void done() {
  313. jDialogViewCustomer.revalidate();
  314. jDialogViewCustomer.repaint();
  315. }
  316. }
  317.  
  318. package testrepaint;
  319.  
  320. public class CustomerOrder {
  321.  
  322. private final int number;
  323. private final float total;
  324.  
  325.  
  326. public CustomerOrder(int number, float total) {
  327. this.number = number;
  328. this.total = total;
  329. }
  330.  
  331. public int getNumber() {
  332. return number;
  333. }
  334.  
  335. public float getTotal() {
  336. return total;
  337. }
  338.  
  339. @Override
  340. public String toString() {
  341. return "toString()";
  342. }
  343. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement