Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>First of all never use <code>Thread</code> to update GUI (Swing components) in java. Instead use <code>javax.swing.Timer</code> or <code>javax.swing.SwingWorker</code>. And for Basic I/O operation use <a href="http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html" rel="nofollow noreferrer">ProgressMonitorInputStream</a> .<br> As simple example of reading a file and displaying it in JTextArea and with progrressbar..Have a look at the code given below:<br></p> <p><img src="https://i.stack.imgur.com/tFMsJ.jpg" alt="enter image description here"></p> <pre><code>import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.List; import java.io.*; import java.beans.*; class ProgressBarFrame extends JFrame { JProgressBar progressBar; int BUFFERSIZE = 10; JTextArea textArea; MyWorker worker; private void createAndShowGUI() { progressBar = new JProgressBar(0,100); progressBar.setStringPainted(true); JButton button = new JButton("Read File"); textArea = new JTextArea(30,100); JScrollPane jsp = new JScrollPane(textArea); Container c = getContentPane(); c.add(jsp); c.add(progressBar,BorderLayout.NORTH); c.add(button,BorderLayout.SOUTH); worker = new MyWorker(); button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent evt) { textArea.setText(""); progressBar.setValue(0); if (worker.getState()== SwingWorker.StateValue.DONE || worker.getState()==SwingWorker.StateValue.STARTED) { worker.cancel(true); worker = new MyWorker(); } worker.execute(); } }); pack(); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } class MyWorker extends SwingWorker&lt;Void, String&gt; { MyWorker() { addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if ("progress".equals(evt.getPropertyName())) { progressBar.setValue((Integer)evt.getNewValue()); } } }); } @Override public Void doInBackground() throws IOException { File file = new File("ProgressBarFrame.java"); long size = file.length(); long temp = 0; BufferedInputStream bfin = new BufferedInputStream(new FileInputStream(file)); byte[] buffer=new byte[BUFFERSIZE]; int totalRead = -1; while ((totalRead=bfin.read(buffer))!=-1 &amp;&amp; ! isCancelled()) { temp = temp + totalRead; publish(new String(buffer)); if (bfin.available()&lt;BUFFERSIZE &amp;&amp; bfin.available()!= 0) buffer = new byte[bfin.available()]; else if(bfin.available()==0) buffer = new byte[1]; else buffer=new byte[BUFFERSIZE]; setProgress((int)((temp/(float)size) * 100)); try{Thread.sleep(1);}catch(Exception ex){} } setProgress(100); return null; } @Override protected void process(List&lt;String&gt; chunks) { for (String value : chunks) { textArea.append(value); } } } public static void main(String st[]) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { ProgressBarFrame pf = new ProgressBarFrame(); pf.createAndShowGUI(); } }); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload