Olá, galera
Meu programa exibe imagens pega os resultados do jslider e guarda em um banco de dados. O problema é que quando a janela de exibição é minimiza e depois restaurada, a figura exibida pelo jpannel é modificada (para a próxima apontada no vetor). Como evito que a figura seja substituida ao se minimizar a janela?, abaixo o código:
[code] package image_measure;
/*
- Aparencia.java
- Created on 25 de Junho de 2007, 11:34
*/
import javax.swing.JFrame;
import javax.swing.JButton;
public class Experimento extends JFrame {
Banco banco = new Banco();
Dados dados;
public int value;
public String classeAvaliada;
/** Creates new form Aparencia */
public Experimento(Dados dados) {
this.dados = dados;
initComponents();
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
confirmaNota = new javax.swing.JButton();
painelImagem01 = new Imagem(dados);
jLabel1 = new javax.swing.JLabel();
painelBarraProgresso = new BarraProgresso(dados);
jLabel2 = new javax.swing.JLabel();
Slider = new javax.swing.JSlider();
Nota = new javax.swing.JTextField();
jLabel4 = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
setTitle("Avaliação de Legibilidade");
setAlwaysOnTop(true);
setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
setLocationByPlatform(true);
setName("Frame 1"); // NOI18N
setResizable(false);
confirmaNota.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
confirmaNota.setText("Confirmar");
confirmaNota.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ConfirmarNota(evt);
}
});
painelImagem01.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
painelImagem01.setDoubleBuffered(false);
painelImagem01.setFont(new java.awt.Font("Arial", 0, 12)); // NOI18N
painelImagem01.setMinimumSize(new java.awt.Dimension(0, 0));
painelImagem01.setPreferredSize(new java.awt.Dimension(512, 512));
javax.swing.GroupLayout painelImagem01Layout = new javax.swing.GroupLayout(painelImagem01);
painelImagem01.setLayout(painelImagem01Layout);
painelImagem01Layout.setHorizontalGroup(
painelImagem01Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 648, Short.MAX_VALUE)
);
painelImagem01Layout.setVerticalGroup(
painelImagem01Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 456, Short.MAX_VALUE)
);
jLabel1.setFont(new java.awt.Font("Arial", 0, 14));
jLabel1.setText("Que nota você dá a legibilidade da imagem?");
javax.swing.GroupLayout painelBarraProgressoLayout = new javax.swing.GroupLayout(painelBarraProgresso);
painelBarraProgresso.setLayout(painelBarraProgressoLayout);
painelBarraProgressoLayout.setHorizontalGroup(
painelBarraProgressoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 366, Short.MAX_VALUE)
);
painelBarraProgressoLayout.setVerticalGroup(
painelBarraProgressoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 15, Short.MAX_VALUE)
);
jLabel2.setFont(new java.awt.Font("Arial", 0, 14));
jLabel2.setText("Imagem ");
Slider.setFont(new java.awt.Font("Arial", 0, 12));
Slider.setMajorTickSpacing(5);
Slider.setMinorTickSpacing(1);
Slider.setOrientation(javax.swing.JSlider.VERTICAL);
Slider.setPaintLabels(true);
Slider.setPaintTicks(true);
Slider.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
Slider.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
SliderStateChanged(evt);
}
});
Slider.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyReleased(java.awt.event.KeyEvent evt) {
SliderKeyReleased(evt);
}
});
Nota.setText("Nota");
jLabel4.setText("Bom [89 ,70] ");
jLabel5.setText("Regular [69 ,50]");
jLabel7.setText("Ruim [19 , 0]");
jLabel3.setText("Excelente [100,90]");
jLabel6.setText("Baixa [49,20] ");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(painelBarraProgresso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(26, 26, 26)
.addComponent(painelImagem01, javax.swing.GroupLayout.PREFERRED_SIZE, 652, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(Slider, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(84, 84, 84)
.addComponent(Nota, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(67, 67, 67)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel3)
.addComponent(confirmaNota)
.addComponent(jLabel4)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel5)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel7)
.addComponent(jLabel6)))))))
.addComponent(jLabel1)))
.addGroup(layout.createSequentialGroup()
.addGap(304, 304, 304)
.addComponent(jLabel2)))
.addContainerGap(9, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(63, 63, 63)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(65, 65, 65)
.addComponent(Nota, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(45, 45, 45)
.addComponent(confirmaNota, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(78, 78, 78)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel7))
.addGroup(layout.createSequentialGroup()
.addGap(36, 36, 36)
.addComponent(Slider, javax.swing.GroupLayout.PREFERRED_SIZE, 318, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addComponent(painelImagem01, javax.swing.GroupLayout.PREFERRED_SIZE, 460, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addGap(197, 197, 197)
.addComponent(painelBarraProgresso, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
setBounds((screenSize.width-1007)/2, (screenSize.height-618)/2, 1007, 618);
}// </editor-fold>
private void SliderStateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
Nota.setText(String.valueOf(Slider.getValue()));
}
private void SliderKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
String typed = Nota.getText();
Slider.setValue(0);
if(!typed.matches("\d+") || typed.length() > 3) {
return;
}
int value = Integer.parseInt(typed);
Slider.setValue(value);
}
private void ConfirmarNota(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
value = Slider.getValue();
if (value>=80){
classeAvaliada =“Excelente”;
} else if (value<=79 && value>=60 ){
classeAvaliada = “Bom”;
}else if (value<=59 && value>=40 ){
classeAvaliada = “Regular”;
}else if (value<=39 && value>=20 ){
classeAvaliada = “Baixa”;
}else {
classeAvaliada = “Ruim”;
}
dados.setnota_imagem(String.valueOf(Slider.getValue()));
dados.setIdUsuario(dados.getNomeUsuario());
banco.salvarExperimento(dados.getIdUsuario(), dados.getImagem(), dados.getnota_imagem(), classeAvaliada ,dados.getData());
dados.incrementProgresso();
//Verifica se o experimento terminou
if(dados.getProgresso()<dados.ETAPAS){
painelImagem01 = new Imagem(dados);
repaint();
}
else{
Agradecimento agradecimento = new Agradecimento();
agradecimento.setVisible(true);
try{
setVisible(false);
finalize();
System.gc();
}
catch(Throwable tA){
tA.printStackTrace();
}
}
}
/*public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Experimento(this.dados).setVisible(true);
}
});
}*/
// Variables declaration - do not modify
private javax.swing.JTextField Nota;
private javax.swing.JSlider Slider;
private javax.swing.JButton confirmaNota;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel painelBarraProgresso;
private javax.swing.JPanel painelImagem01;
// End of variables declaration
}[/code]