Desesperacionnnn, a ver, he limitado bastante el problema.
Si pruebo la barra sola como JDialog sobre otra ventana principal JFrame funciona perfectamente
Código PHP:
public class Main {
public static void main(String[] args) {
JFrame parentFrame = new JFrame();
parentFrame.setSize(500, 150);
JLabel jl = new JLabel();
jl.setText("Contando : 0");
parentFrame.add(BorderLayout.CENTER, jl);
parentFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
parentFrame.setVisible(true);
final JDialog dlg = new JDialog(parentFrame, "Progress Dialog", true);
JProgressBar dpb = new JProgressBar(0, 500);
dlg.add(BorderLayout.CENTER, dpb);
dlg.add(BorderLayout.NORTH, new JLabel("Progress..."));
dlg.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dlg.setSize(300, 75);
dlg.setLocationRelativeTo(parentFrame);
Thread t = new Thread(new Runnable() {
public void run() {
dlg.setVisible(true);
}
});
t.start();
for (int i = 0; i <= 500; i++) {
jl.setText("Contando : " + i);
dpb.setValue(i);
if(dpb.getValue() == 500){
dlg.setVisible(false);
System.exit(0);
}
try {
Thread.sleep(25);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
dlg.setVisible(true);
}
}
Pero si hago que la ventana de la barra responda a un evento que se activa al pulsar un boton ya no se ve la barra :(, el codigo es este:
Código PHP:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.WindowConstants;
public class Main2
{
/** La ventana */
private JFrame v;
/** El botón */
private JButton b;
public static void main(String [] args)
{
new Main2();
}
/**
* Crea la ventana, inicializa todo y la visualiza
*/
public Main2()
{
// Nueva ventana. Se el pone un FlowLayout para que el botón y campo
// de texto quede alineados.
v = new JFrame("Version Beta Transmision");
GridBagLayout vLayout = new GridBagLayout();
v.getContentPane().setLayout(vLayout);
vLayout.rowWeights = new double[] {0.1, 0.1, 0.1, 0.1, 0.1};
vLayout.rowHeights = new int[] {7, 7, 7, 7, 7};
vLayout.columnWeights = new double[] {0.1, 0.0, 0.1, 0.1};
vLayout.columnWidths = new int[] {7, 129, 7, 7};
// Se crea el botón y se mete en la ventana
b = new JButton("Enviar");
v.getContentPane().add(b, new GridBagConstraints(3, 4, 1, 1, 0.0, 0.0, GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
// Se le dice al botón qué tiene que hacer cuando lo pulsemos.
b.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
//System.out.println("La ruta es: "+file);
v.setVisible(false);
final JDialog dlg = new JDialog(v, "Progress Dialog", true);
JProgressBar dpb = new JProgressBar(0, 500);
dlg.add(BorderLayout.CENTER, dpb);
dlg.add(BorderLayout.NORTH, new JLabel("Progress..."));
dlg.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dlg.setSize(300, 75);
dlg.setLocationRelativeTo(v);
Thread t = new Thread(new Runnable() {
public void run() {
dlg.setVisible(true);
}
});
t.start();
for (int i = 0; i <= 500; i++) {
dpb.setValue(i);
if(dpb.getValue() == 500){
dlg.setVisible(false);
System.exit(0);
}
try {
Thread.sleep(25);
} catch (InterruptedException el) {
el.printStackTrace();
}
}
dlg.setVisible(true);
}
});
// Se le dice a la ventana que termine el programa cuando se la cierre
v.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// Se le da un tamaño automático a la ventana para que quepa todo su
// contenido.
v.pack();
v.setSize(764, 365);
// Se hace visible la ventana
v.setVisible(true);
}
}