Hallo, ich habe folgende GUI Klasse.
Nun würde ich gerne unten in den SwingWorkers auf meine jProgressBar1 zugreifen. Jedoch klappt das nciht. Er sagt, ich soll die Klasse jProgressbar1 erzeugen, sobald ich darauf zugreifen will.
Jmd ne Idee an was das liegen könnte? Irgendwie muss ich wohl ein Objekt erzeugen, jedoch wie und wo und aus welcher Klasse?
Danke!
Java:
package projekt;
import java.io.IOException;
import java.io.PrintStream;
import java.security.NoSuchAlgorithmException;
import javax.swing.*;
import java.io.*;
public class GUI extends javax.swing.JFrame {
public GUI() {
super();
initComponents();
run();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jButton1 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton2 = new javax.swing.JButton();
jButton3 = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jProgressBar1 = new javax.swing.JProgressBar();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jButton1.setText("Lade Hashtabelle");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jTextArea1.setEditable(false);
jTextArea1.setBackground(new java.awt.Color(0, 0, 0));
jTextArea1.setColumns(20);
jTextArea1.setForeground(new java.awt.Color(51, 204, 0));
jTextArea1.setRows(5);
jTextArea1.setSelectedTextColor(new java.awt.Color(0, 204, 51));
jScrollPane1.setViewportView(jTextArea1);
jButton2.setText("Speichere Hashtabelle");
jButton2.setToolTipText("");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jButton3.setText("Starte Programm");
jButton3.setToolTipText("");
jButton3.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton3ActionPerformed(evt);
}
});
jTextField1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField1ActionPerformed(evt);
}
});
jLabel1.setText("Anzahl Einträge:");
jProgressBar1.setToolTipText("");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 178, Short.MAX_VALUE)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButton3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jButton2)))
.addGap(75, 75, 75))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jProgressBar1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jScrollPane1))
.addContainerGap())))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton1)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButton3)
.addComponent(jButton2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jProgressBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 283, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(31, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
new LoadHashtableWorker().execute();
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
new FillSaveHashtableWorker().execute();
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
new AttackWorker().execute();
}
private void jTextField1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
public void run()
{
redirectSystemStreams();
}
//The following codes set where the text get redirected. In this case, jTextArea1
private void updateTextArea(final String text) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
jTextArea1.append(text);
}
});
}
//Followings are The Methods that do the Redirect, you can simply Ignore them.
private void redirectSystemStreams() {
OutputStream out = new OutputStream() {
@Override
public void write(int b) throws IOException {
updateTextArea(String.valueOf((char) b));
}
@Override
public void write(byte[] b, int off, int len) throws IOException {
updateTextArea(new String(b, off, len));
}
@Override
public void write(byte[] b) throws IOException {
write(b, 0, b.length);
}
};
System.setOut(new PrintStream(out, true));
System.setErr(new PrintStream(out, true));
}
public void setprogress()
{
//int i = OnlinePhase.passwordTable.size();
for (int j=0; j<10000000; j=j+1){
//j = j/1000 *100;
jProgressBar1.setValue(j);
}
}
public static void main(String args[]) throws NoSuchAlgorithmException, InterruptedException {
GUI gui = new GUI();
gui.setVisible(true);
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
public javax.swing.JProgressBar jProgressBar1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextField jTextField1;
// End of variables declaration
}
class LoadHashtableWorker extends SwingWorker<Integer, Integer> {
@Override
protected Integer doInBackground() throws Exception {
Precomp.loadHashtable();
Thread.sleep(1000);
return 0;
}
@Override
protected void done() {
System.out.println("Hashtabelle geladen");
}
}
class FillSaveHashtableWorker extends SwingWorker<Integer, Integer> {
@Override
protected Integer doInBackground() throws Exception {
Precomp.fillTable(500000);
Precomp.saveHashtable();
Thread.sleep(1000);
return 0;
}
@Override
protected void done() {
System.out.println("Hashtabelle generiert und gespeichert");
}
}
class AttackWorker extends SwingWorker<Integer, Integer> {
int doPoint = 0;
protected Integer doInBackground() throws Exception {
OnlinePhase.attack();
Thread.sleep(1000);
return 0;
}
@Override
protected void done() {
}
}
Nun würde ich gerne unten in den SwingWorkers auf meine jProgressBar1 zugreifen. Jedoch klappt das nciht. Er sagt, ich soll die Klasse jProgressbar1 erzeugen, sobald ich darauf zugreifen will.
Jmd ne Idee an was das liegen könnte? Irgendwie muss ich wohl ein Objekt erzeugen, jedoch wie und wo und aus welcher Klasse?
Danke!
Zuletzt bearbeitet: