Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. package com.example.logging;
  2. public interface SimpleActivityLogger {
  3. void logAction(String message);
  4. void writeEntry(String s1); //*** I added this ***
  5. }
  6.  
  7. public class SimpleComponentLogger implements SimpleActivityLogger{
  8. private JTextComponent target;
  9. private ArrayList data;
  10.  
  11. public SimpleComponentLogger(JTextComponent target, ArrayList data){
  12. this.target = target;
  13. this.data = data;
  14. }
  15.  
  16. public void logAction(final String message){
  17. SwingUtilities.invokeLater(new Runnable(){
  18. public void run(){
  19. target.setText(String.format("%s%s%n", new Object[]{target.getText(), message}));
  20. }
  21. });
  22. }
  23.  
  24. public void writeEntry(String s1){
  25. data.add(s1);
  26. System.out.println("data array length: " + data.size());
  27. }
  28. }
  29.  
  30. // this originally extended NotesThread,
  31. // but I assume you won't have that on your system
  32. public class LookupIterator3 extends Thread {
  33. private SimpleActivityLogger logger;
  34.  
  35. // Constructor that passes logger instance
  36. public LookupIterator3(SimpleActivityLogger logger){
  37. this.logger = logger;
  38. }
  39.  
  40. public void doLookup(){
  41. this.start();
  42. }
  43.  
  44. public void run() {
  45. String[] words = {"the", "quick", "smart", "fox", "jumps", "over", "the", "lazy", "dog"};
  46. for(int i=0; i<words.length; i++){
  47. synchronized(words){
  48. try{
  49. logger.logAction(words[i]);
  50. words.wait(500);
  51. }
  52. catch(InterruptedException ie){ie.printStackTrace();}
  53. }
  54. logger.writeEntry(words[i]);
  55. }
  56. }
  57. }
  58.  
  59. public class MySwingTest extends JFrame {
  60. private static final long serialVersionUID = 1L;
  61. private JTextField filename = new JTextField();
  62. private JTextField dir = new JTextField();
  63.  
  64. private JTextPane output, answersPane;
  65. private JScrollPane scroller;
  66. private SimpleComponentLogger logger;
  67. private ArrayList answer;
  68.  
  69. public MySwingTest() {
  70. JMenu fileMenu;
  71. JMenuBar menuBar;
  72. JMenuItem menuOpen, menuExit;
  73.  
  74. JButton answerButton = new JButton("show answers");
  75. answerButton.addActionListener(new MyListener());
  76.  
  77. menuBar = new JMenuBar();
  78. fileMenu = new JMenu("File");
  79. menuBar.add(fileMenu);
  80. menuOpen = new JMenuItem("open file");
  81. menuExit = new JMenuItem("exit");
  82.  
  83. answer = new ArrayList();
  84. output = new JTextPane();
  85. logger = new SimpleComponentLogger(output, answer);
  86. scroller = new JScrollPane(output, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
  87. JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
  88. output.setEditable(false);
  89. answer = new ArrayList();
  90. answersPane = new JTextPane();
  91. answersPane.setSize(100, 200);
  92. answersPane.setEditable(false);
  93.  
  94. fileMenu.add(menuOpen);
  95. fileMenu.add(menuExit);
  96.  
  97. menuOpen.addActionListener(new MyListener());
  98. menuExit.addActionListener(new MyListener());
  99.  
  100. JPanel p = new JPanel();
  101. p.setLayout(new GridLayout(2, 1));
  102. p.add(filename);
  103. p.add(dir);
  104.  
  105. Container cp = getContentPane();
  106. cp.add(menuBar,BorderLayout.NORTH);
  107. cp.add(p);
  108. cp.add(scroller, BorderLayout.CENTER);
  109. cp.add(answersPane, BorderLayout.WEST);
  110. cp.add(answerButton, BorderLayout.SOUTH);
  111.  
  112. dir.setEditable(false);
  113. filename.setEditable(false);
  114. }
  115.  
  116. // Inner class listener
  117. class MyListener implements ActionListener {
  118. public void actionPerformed(ActionEvent e) {
  119. String eventCommand = e.getActionCommand();
  120. if(eventCommand.equals("exit")){
  121. System.exit(0);
  122. }
  123. if(eventCommand.equals("show answers")){
  124. String entry = (String)answer.get(0);
  125. answersPane.setText(entry);
  126. }
  127. else {
  128. LookupIterator3 lu3 = new LookupIterator3(logger);
  129. lu3.doLookup();
  130. }
  131. }
  132. }
  133.  
  134. public static void main(String[] args) {
  135. run(new MySwingTest(), 450, 600);
  136. }
  137.  
  138. public static void run(JFrame frame, int width, int height) {
  139. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  140. frame.setSize(width, height);
  141. frame.setVisible(true);
  142. }
  143. }
  144.  
  145. answer = new ArrayList();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement