Guest User

Untitled

a guest
Jul 16th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.13 KB | None | 0 0
  1. public class BusyCursorTest extends javax.swing.JFrame {
  2.  
  3. public BusyCursorTest() {
  4.  
  5. javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
  6. javax.swing.JMenu menu = new javax.swing.JMenu("Menu");
  7. javax.swing.JMenuItem wait1 = new javax.swing.JMenuItem("Wait 100 ms");
  8. javax.swing.JMenuItem wait2 = new javax.swing.JMenuItem("Wait 250 ms");
  9. javax.swing.JMenuItem wait3 = new javax.swing.JMenuItem("Wait 500 ms");
  10. javax.swing.JMenuItem wait4 = new javax.swing.JMenuItem("Wait 1000 ms");
  11. menu.add(wait1);
  12. menu.add(wait2);
  13. menu.add(wait3);
  14. menu.add(wait4);
  15. menuBar.add(menu);
  16. setJMenuBar(menuBar);
  17. wait1.addActionListener(getActionListener(this, delayActionListener(100)));
  18. wait2.addActionListener(getActionListener(this, delayActionListener(250)));
  19. wait3.addActionListener(getActionListener(this, delayActionListener(500)));
  20. wait4.addActionListener(getActionListener(this, delayActionListener(1000)));
  21.  
  22. cursorPanel = new javax.swing.JPanel();
  23. cursorPanel.addMouseListener(new java.awt.event.MouseAdapter() {
  24.  
  25. public void mouseEntered(java.awt.event.MouseEvent e) {
  26. cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
  27. }
  28.  
  29. public void mouseExited(java.awt.event.MouseEvent e) {
  30. cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.DEFAULT_CURSOR));
  31. }
  32.  
  33. });
  34.  
  35. javax.swing.JTabbedPane tabbedPane = new javax.swing.JTabbedPane();
  36. tabbedPane.addTab("Default", new javax.swing.JPanel());
  37. tabbedPane.addTab("Cursor change", cursorPanel);
  38. getContentPane().add(tabbedPane);
  39.  
  40. setTitle("Cursor test");
  41. setSize(400, 400);
  42. setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
  43. setVisible(true);
  44. }
  45.  
  46. private java.awt.event.ActionListener delayActionListener(final int delay) {
  47. java.awt.event.ActionListener listener = new java.awt.event.ActionListener() {
  48.  
  49. public void actionPerformed(java.awt.event.ActionEvent ae) {
  50. try {
  51. Thread.sleep(delay);
  52. } catch (InterruptedException e) {
  53. }
  54. }
  55.  
  56. };
  57. return listener;
  58. }
  59.  
  60. public static void main(String[] args) {
  61. new BusyCursorTest();
  62. }
  63.  
  64. public static java.awt.event.ActionListener getActionListener(final java.awt.Component component,
  65. final java.awt.event.ActionListener originalActionListener) {
  66.  
  67. java.awt.event.ActionListener actionListener = new java.awt.event.ActionListener() {
  68.  
  69. public void actionPerformed(final java.awt.event.ActionEvent e) {
  70.  
  71. java.util.TimerTask timerTask = new java.util.TimerTask() {
  72.  
  73. public void run() {
  74. originalCursor = component.getCursor();
  75. component.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
  76. }
  77.  
  78. };
  79. java.util.Timer timer = new java.util.Timer();
  80.  
  81. try {
  82. timer.schedule(timerTask, DELAY_MS);
  83. originalActionListener.actionPerformed(e);
  84. } finally {
  85. timer.cancel();
  86. component.setCursor(originalCursor);
  87. }
  88. }
  89.  
  90. };
  91. return actionListener;
  92. }
  93.  
  94. private javax.swing.JPanel cursorPanel = null;
  95.  
  96. public static java.awt.Cursor originalCursor = null;
  97.  
  98. public static final int DELAY_MS = 250;
  99. }
  100.  
  101. public class BusyCursorTest extends javax.swing.JFrame {
  102.  
  103. private javax.swing.JPanel cursorPanel = null;
  104.  
  105. public BusyCursorTest() {
  106.  
  107. javax.swing.JMenuBar menuBar = new javax.swing.JMenuBar();
  108. javax.swing.JMenu menu = new javax.swing.JMenu("Menu");
  109. javax.swing.JMenuItem wait1 = new javax.swing.JMenuItem("Wait 100 ms");
  110. javax.swing.JMenuItem wait2 = new javax.swing.JMenuItem("Wait 250 ms");
  111. javax.swing.JMenuItem wait3 = new javax.swing.JMenuItem("Wait 500 ms");
  112. javax.swing.JMenuItem wait4 = new javax.swing.JMenuItem("Wait 1000 ms");
  113. menu.add(wait1);
  114. menu.add(wait2);
  115. menu.add(wait3);
  116. menu.add(wait4);
  117. menuBar.add(menu);
  118. setJMenuBar(menuBar);
  119. wait1.addActionListener(getActionListener(this, delayActionListener(100)));
  120. wait2.addActionListener(getActionListener(this, delayActionListener(250)));
  121. wait3.addActionListener(getActionListener(this, delayActionListener(500)));
  122. wait4.addActionListener(getActionListener(this, delayActionListener(1000)));
  123.  
  124. cursorPanel = new javax.swing.JPanel();
  125. cursorPanel.addMouseListener(new java.awt.event.MouseAdapter() {
  126.  
  127. public void mouseEntered(java.awt.event.MouseEvent e) {
  128. cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.CROSSHAIR_CURSOR));
  129. }
  130.  
  131. public void mouseExited(java.awt.event.MouseEvent e) {
  132. cursorPanel.setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.DEFAULT_CURSOR));
  133. }
  134.  
  135. });
  136.  
  137. javax.swing.JTabbedPane tabbedPane = new javax.swing.JTabbedPane();
  138. tabbedPane.addTab("Default", new javax.swing.JPanel());
  139. tabbedPane.addTab("Cursor change", cursorPanel);
  140. getContentPane().add(tabbedPane);
  141.  
  142. setTitle("Cursor test");
  143. setSize(400, 400);
  144. setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
  145. setVisible(true);
  146. }
  147.  
  148. private java.awt.event.ActionListener delayActionListener(final int delay) {
  149. java.awt.event.ActionListener listener = new java.awt.event.ActionListener() {
  150.  
  151. public void actionPerformed(java.awt.event.ActionEvent ae) {
  152. try {
  153. Thread.sleep(delay);
  154. } catch (InterruptedException e) {
  155. }
  156. }
  157.  
  158. };
  159. return listener;
  160. }
  161.  
  162. public static void main(String[] args) {
  163. new BusyCursorTest();
  164. }
  165.  
  166. public static java.awt.event.ActionListener getActionListener(final javax.swing.JFrame frame,
  167. final java.awt.event.ActionListener originalActionListener) {
  168.  
  169. java.awt.event.ActionListener actionListener = new java.awt.event.ActionListener() {
  170.  
  171. public void actionPerformed(final java.awt.event.ActionEvent e) {
  172.  
  173. java.util.TimerTask timerTask = new java.util.TimerTask() {
  174.  
  175. public void run() {
  176. originalCursor = frame.getCursor();
  177. startWaitCursor(frame);
  178. }
  179.  
  180. };
  181. java.util.Timer timer = new java.util.Timer();
  182.  
  183. try {
  184. timer.schedule(timerTask, DELAY_MS);
  185. originalActionListener.actionPerformed(e);
  186. } finally {
  187. timer.cancel();
  188. stopWaitCursor(frame);
  189. }
  190. }
  191.  
  192. };
  193. return actionListener;
  194. }
  195.  
  196. private static void startWaitCursor(javax.swing.JFrame frame) {
  197. frame.getGlassPane().setCursor(java.awt.Cursor.getPredefinedCursor(java.awt.Cursor.WAIT_CURSOR));
  198. frame.getGlassPane().addMouseListener(mouseAdapter);
  199. frame.getGlassPane().setVisible(true);
  200. }
  201.  
  202. private static void stopWaitCursor(javax.swing.JFrame frame) {
  203. frame.getGlassPane().setCursor(originalCursor);
  204. frame.getGlassPane().removeMouseListener(mouseAdapter);
  205. frame.getGlassPane().setVisible(false);
  206. }
  207.  
  208. private static java.awt.Cursor originalCursor = null;
  209.  
  210. private static final java.awt.event.MouseAdapter mouseAdapter = new java.awt.event.MouseAdapter() {
  211. };
  212.  
  213. public static final int DELAY_MS = 250;
  214.  
  215. import java.awt.*;
  216. import java.awt.event.*;
  217. import java.text.SimpleDateFormat;
  218. import java.util.Random;
  219. import javax.swing.*;
  220. import javax.swing.UIManager.LookAndFeelInfo;
  221. import javax.swing.table.*;
  222.  
  223. public class TableWithTimer implements ActionListener, Runnable {
  224.  
  225. private static final long serialVersionUID = 1L;
  226. private JFrame frame = new JFrame();
  227. private JScrollPane scroll = new JScrollPane();
  228. private JTable myTable;
  229. private JPanel buttonPanel = new JPanel();
  230. private JButton startButton = new JButton("Start Thread to Update Table");
  231. private JButton stopButton = new JButton("Stop Thread for Update Table");
  232. private JButton newButton = new JButton("Load new Data to Table");
  233. private int count = 0;
  234. private int delay = 3;
  235. private javax.swing.Timer timer = null;
  236. private boolean runProcess;
  237. private int row = 0;
  238. private int column = 0;
  239. private String value = "Amnd";
  240. private int amndValue = 0;
  241. private String valueAt = "";
  242. private SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
  243. private String[] head = {"One", "Two", "Three", "Four", "Five", "Six"};
  244. private String[][] data = new String[25][6];
  245.  
  246. public TableWithTimer() {
  247. myTable = new TableBackroundPaint0(data, head);
  248. myTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
  249. myTable.setGridColor(Color.gray);
  250. myTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  251. final TableCellRenderer cellRendener = myTable.getTableHeader().getDefaultRenderer();
  252. myTable.getTableHeader().setDefaultRenderer(new TableCellRenderer() {
  253.  
  254. @Override
  255. public Component getTableCellRendererComponent(JTable table, Object value,
  256. boolean isSelected, boolean hasFocus, int row, int column) {
  257. JLabel label = (JLabel) cellRendener.getTableCellRendererComponent(
  258. table, value, isSelected, hasFocus, row, column);
  259. label.setBackground(Color.orange);
  260. label.setForeground(Color.darkGray);
  261. label.setFont(new Font("SansSerif", Font.BOLD, 12));
  262. label.setBorder(BorderFactory.createCompoundBorder(label.getBorder(),
  263. BorderFactory.createEmptyBorder(0, 5, 0, 0)));
  264. label.setHorizontalAlignment(SwingConstants.LEFT);
  265. label.setHorizontalAlignment(SwingConstants.CENTER);
  266. if ((label.getText().equals("First")) || (label.getText().equals("Second"))) {
  267. label.setForeground(Color.red);
  268. }
  269. if ((label.getText().equals("Day")) || (label.getText().equals("Month")) || (label.getText().equals("Year"))) {
  270. label.setForeground(Color.blue);
  271. }
  272. if ((label.getText().equals("Time"))) {
  273. label.setForeground(Color.green);
  274. }
  275. return label;
  276. }
  277. });
  278. TableColumnModel cm = myTable.getColumnModel();
  279. for (int column1 = 0; column1 < cm.getColumnCount(); column1++) {
  280. TableColumn colLeft1 = cm.getColumn(column1);
  281. cm.getColumn(column1).setWidth(140);
  282. cm.getColumn(column1).setPreferredWidth(140);
  283. }
  284. //myTable.setFillsViewportHeight(true); // apply paintComponent for whole Viewport
  285. JButton cornerButtonTop = new JButton();
  286. cornerButtonTop.setBackground(scroll.getViewport().getBackground());
  287. JButton cornerButtonBottom = new JButton();
  288. cornerButtonBottom.setOpaque(false);
  289. scroll.setCorner(JScrollPane.UPPER_RIGHT_CORNER, cornerButtonTop);
  290. scroll.setCorner(JScrollPane.LOWER_RIGHT_CORNER, cornerButtonBottom);
  291. scroll.setViewportView(myTable);
  292. scroll.setMinimumSize(new Dimension(600, 400));
  293. scroll.setMaximumSize(new Dimension(900, 600));
  294. scroll.setPreferredSize(new Dimension(850, 430));
  295. frame.add(scroll, BorderLayout.CENTER);
  296. buttonPanel.setLayout(new GridLayout(1, 4, 10, 10));
  297. startButton.addActionListener(this);
  298. startButton.setEnabled(false);
  299. stopButton.addActionListener(this);
  300. stopButton.setEnabled(false);
  301. JButton hideButton = new JButton();
  302. newButton.addActionListener(this);
  303. newButton.setEnabled(false);
  304. buttonPanel.add(startButton);
  305. buttonPanel.add(stopButton);
  306. buttonPanel.add(hideButton);
  307. buttonPanel.add(newButton);
  308. hideButton.setVisible(false);
  309. frame.add(buttonPanel, BorderLayout.SOUTH);
  310. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  311. frame.setLocation(100, 100);
  312. frame.pack();
  313. frame.setVisible(true);
  314. start();
  315. }
  316.  
  317. @Override
  318. public void actionPerformed(ActionEvent e) {
  319. if (e.getSource() == startButton) {
  320. runProcess = true;
  321. new Thread(this).start();
  322. myTable.requestFocus();
  323. startButton.setEnabled(false);
  324. stopButton.setEnabled(true);
  325. } else if (e.getSource() == stopButton) {
  326. scroll.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  327. runProcess = false;
  328. startButton.setEnabled(true);
  329. stopButton.setEnabled(false);
  330. newButton.setEnabled(true);
  331. } else if (e.getSource() == newButton) {
  332. runProcess = false;
  333. startButton.setEnabled(true);
  334. stopButton.setEnabled(false);
  335. newButton.setEnabled(false);
  336. addNewData();
  337. }
  338. }
  339.  
  340. public void addNewData() {
  341. SwingUtilities.invokeLater(new Runnable() {
  342.  
  343. @Override
  344. public void run() {
  345. TableModel model = myTable.getModel();
  346. for (int j = 0; j < model.getRowCount(); j++) {
  347. int column = model.getColumnCount();
  348. for (int i = 0; i < column; i++) {
  349. model.setValueAt("Deleted", j, i);
  350. }
  351. }
  352. startNewData();
  353. }
  354. });
  355. }
  356.  
  357. private void start() {
  358. scroll.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
  359. timer = new javax.swing.Timer(delay * 100, updateCol());
  360. timer.start();
  361. }
  362.  
  363. private void startNewData() {
  364. scroll.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
  365. count = 0;
  366. timer = new javax.swing.Timer(1500, updateCol());
  367. timer.start();
  368. }
  369.  
  370. @Override
  371. public void run() {
  372. scroll.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
  373. count = 0;
  374. Random random = new Random();
  375. while (runProcess) {
  376. row = random.nextInt(myTable.getRowCount());
  377. column = random.nextInt(myTable.getColumnCount());
  378. SwingUtilities.invokeLater(new Runnable() {
  379.  
  380. @Override
  381. public void run() {
  382. try {
  383. amndValue++;
  384. valueAt = ((myTable.getValueAt(row, column)).toString());
  385. if (!(valueAt.startsWith("A"))) {
  386. count++;
  387. if (count == ((25 * 6))) {
  388. JOptionPane.showMessageDialog(myTable, " Update done ");
  389. scroll.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  390. runProcess = false;
  391. }
  392. java.util.Date date = new java.util.Date();
  393. String dateTime = sdf.format(date.getTime());
  394. myTable.setValueAt((value + " " + String.valueOf(amndValue) + " at: " + dateTime), row, column);
  395. //myTable.setValueAt(new Integer(1), row, column); // please uncoment for generate misstype error on EDT
  396. myTable.changeSelection(row, column, false, false);
  397. System.out.println("update cycle with value :"
  398. + (value + " " + String.valueOf(amndValue) + " at: " + dateTime) + ", table row :" + row
  399. + ", table column " + column);
  400. }
  401. } catch (Exception e) {
  402. runProcess = false;
  403. System.out.println("Error for update JTable cell");
  404. e.printStackTrace();
  405. }
  406. }
  407. });
  408. try {
  409. Thread.sleep(500);
  410. } catch (Exception e) {
  411. e.printStackTrace();
  412. }
  413. }
  414. }
  415.  
  416. public Action updateCol() {
  417. return new AbstractAction("text load action") {
  418.  
  419. private static final long serialVersionUID = 1L;
  420.  
  421. @Override
  422. public void actionPerformed(ActionEvent e) {
  423.  
  424. System.out.println("updating row " + (count + 1));
  425. TableModel model = myTable.getModel();
  426. int cols = model.getColumnCount();
  427. int row = 0;
  428. for (int j = 0; j < cols; j++) {
  429. row = count;
  430. myTable.changeSelection(row, 0, false, false);
  431. timer.setDelay(200);
  432. Object value = "row " + (count + 1) + " item " + (j + 1);
  433. model.setValueAt(value, count, j);
  434. }
  435. count++;
  436. if (count >= myTable.getRowCount()) {
  437. myTable.changeSelection(0, 0, false, false);
  438. timer.stop();
  439. System.out.println("update cycle completed");
  440. myTable.clearSelection();
  441. startButton.setEnabled(true);
  442. newButton.setEnabled(true);
  443. scroll.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  444. }
  445. }
  446. };
  447. }
  448.  
  449. public static void main(String args[]) {
  450. try {
  451. for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
  452. System.out.println(info.getName());
  453. if ("Nimbus".equals(info.getName())) {
  454. UIManager.setLookAndFeel(info.getClassName());
  455. break;
  456. }
  457. }
  458. } catch (UnsupportedLookAndFeelException e) {
  459. // handle exception
  460. } catch (ClassNotFoundException e) {
  461. // handle exception
  462. } catch (InstantiationException e) {
  463. // handle exception
  464. } catch (IllegalAccessException e) {
  465. // handle exception
  466. }
  467. TableWithTimer tableWithTimer = new TableWithTimer();
  468. }
  469. }
  470.  
  471. class TableBackroundPaint0 extends JTable {
  472.  
  473. private static final long serialVersionUID = 1L;
  474.  
  475. TableBackroundPaint0(Object[][] data, Object[] head) {
  476. super(data, head);
  477. setOpaque(false);
  478. ((JComponent) getDefaultRenderer(Object.class)).setOpaque(false);
  479. }
  480.  
  481. @Override
  482. public void paintComponent(Graphics g) {
  483. Color background = new Color(168, 210, 241);
  484. Color controlColor = new Color(230, 240, 230);
  485. int width = getWidth();
  486. int height = getHeight();
  487. Graphics2D g2 = (Graphics2D) g;
  488. Paint oldPaint = g2.getPaint();
  489. g2.setPaint(new GradientPaint(0, 0, background, width, 0, controlColor));
  490. g2.fillRect(0, 0, width, height);
  491. g2.setPaint(oldPaint);
  492. for (int row : getSelectedRows()) {
  493. Rectangle start = getCellRect(row, 0, true);
  494. Rectangle end = getCellRect(row, getColumnCount() - 1, true);
  495. g2.setPaint(new GradientPaint(start.x, 0, controlColor, (int) ((end.x + end.width - start.x) * 1.25), 0, Color.orange));
  496. g2.fillRect(start.x, start.y, end.x + end.width - start.x, start.height);
  497. }
  498. super.paintComponent(g);
  499. }
  500. }
  501.  
  502. import java.awt.*;
  503. import java.util.*;
  504. import javax.swing.*;
  505. import javax.swing.event.*;
  506.  
  507. public class DelayedComboBoxDemo implements Runnable {
  508.  
  509. private JCheckBox chkA = new JCheckBox("A");
  510. private JCheckBox chkB = new JCheckBox("B");
  511. private JCheckBox chkC = new JCheckBox("C");
  512. private JComboBox cboItems = new JComboBox();
  513. private JFrame frame;
  514.  
  515. public static void main(String[] args) {
  516. SwingUtilities.invokeLater(new DelayedComboBoxDemo());
  517. }
  518.  
  519. @Override
  520. public void run() {
  521. cboItems.addItem("-");
  522. JPanel p = new JPanel();
  523. p.add(chkA);
  524. p.add(chkB);
  525. p.add(chkC);
  526. p.add(cboItems);
  527. frame = new JFrame("Delayed ComboBox Test");
  528. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  529. frame.add(p);
  530. frame.pack();
  531. frame.setLocationRelativeTo(null);
  532. frame.setVisible(true);
  533. cboItems.addPopupMenuListener(new PopupMenuListener() {
  534.  
  535. @Override
  536. public void popupMenuCanceled(PopupMenuEvent e) {
  537. }
  538.  
  539. @Override
  540. public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
  541. }
  542.  
  543. @Override
  544. public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
  545. int items = cboItems.getItemCount();
  546. rebuildList();
  547. if (items != cboItems.getItemCount()) {
  548. cboItems.hidePopup();
  549. cboItems.showPopup();
  550. }
  551. }
  552. });
  553. }
  554.  
  555. private void rebuildList() {
  556. frame.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
  557. Vector<String> items = new Vector<String>();
  558. if (chkA.isSelected()) {
  559. items.add("A");
  560. } else if (chkB.isSelected()) {
  561. items.add("B");
  562. } else if (chkC.isSelected()) {
  563. items.add("C");
  564. } else {
  565. items.add("-");
  566. }
  567. cboItems.setModel(new DefaultComboBoxModel(items));
  568. try {
  569. Thread.sleep(3000); // simulate a long transaction
  570. } catch (InterruptedException ex) {
  571. }
  572. frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
  573. }
  574. }
Add Comment
Please, Sign In to add comment