Frame refre sh только после того, как пользователь удалит JTextArea - PullRequest
0 голосов
/ 26 марта 2020

В JPanel моего приложения есть JLabel, используемый для отображения изображения, метка для отображения информации, гистограмма и JTextArea для поиска чего-либо.

Когда я печатаю текст в текстовую область и нажмите на кнопку, изображение и график refre sh, но не метку для информации. Этот ярлык обновляется только когда я стираю текст внутри текстовой области. Я не понимаю, почему.

Вот мой код:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;

public class Statistique2 extends JPanel{
    JTextArea pkmnTxt = new JTextArea("Mimiqui",1,5);
    JPanel contentPane = new JPanel();
    ImageCustom imagepkmn = new ImageCustom("Image/Celebi.png", 250, 250);
    JPanel pokestat = new JPanel();
    JButton searchButton = new JButton("Search");
    JPanel north = new JPanel();
    JPanel center = new JPanel();
    JPanel infos = new JPanel();
    ChartPanel chartpanel;
    JLabel type = new JLabel();
    JLabel infoVitesse = new JLabel();
    JPanel TypePanel = new JPanel();
    JPanel VitessePanel = new JPanel();
    final DefaultCategoryDataset dataset = new DefaultCategoryDataset( );  
    graphMaison.GraphPanel BGP = new graphMaison.GraphPanel();


    public Statistique2() {
        setSize(900, 600);
        setBackground(Color.pink);

        imagepkmn.setHorizontalAlignment(JLabel.CENTER);
        imagepkmn.setVerticalAlignment(JLabel.CENTER);
        imagepkmn.setBackground(Color.pink);
        imagepkmn.setOpaque(true);


        center.setLayout(new GridLayout(3,1));

        ImageIcon pokeball = new ImageIcon("pokeball.jpg"); 
        infos.setBorder(BorderFactory.createMatteBorder(12, 12, 12, 12, pokeball));
        infos.setPreferredSize(new Dimension(200,300));
        infos.setBackground(Color.white);
        infos.setLayout(new BoxLayout(infos, BoxLayout.Y_AXIS));
        north.add(pkmnTxt);
        north.add(searchButton);
        setLayout(new BorderLayout());
        searchButton.addActionListener(new searchPokemon());
        add(BorderLayout.NORTH, north);
        center.add(imagepkmn);
        center.add(infos);
        JFreeChart barChart = ChartFactory.createBarChart("Statistiques", null, null,dataset,PlotOrientation.HORIZONTAL,false, false, false);         
        ChartPanel chartPanel = new ChartPanel( barChart );
        center.add(BGP);

        add(BorderLayout.CENTER, center);
    }



    class searchPokemon implements ActionListener{
        public void actionPerformed(ActionEvent e) {
            imagepkmn.ChangeImage("Image/" + pkmnTxt.getText() + ".png", 200, 200);

            try {
                ImageCustom typeIm = new ImageCustom("imagetype/Obscure.png", 15, 68);
                ImageCustom typeIm2 = new ImageCustom("imagetype/Obscure.png", 15, 68);

                TypePanel.removeAll();
                VitessePanel.removeAll();

                TypePanel.setBackground(Color.pink);
                VitessePanel.setBackground(Color.pink);

                String url = "jdbc:postgresql://localhost:5432/pokestrat";
                String user = "postgres";
                String passwd = "Dragon-49";
                Connection conn = DriverManager.getConnection(url, user, passwd);
                Statement state = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
                String query = "SELECT * FROM pokestrate WHERE nom = '" + pkmnTxt.getText() + "'";
                ResultSet res = state.executeQuery(query);
                res.next();


                type.setText("Type : ");
                TypePanel.add(type);
                typeIm.ChangeImage("imagetype/" + res.getString("type1") + ".png", 15, 68);
                if (!res.getString("type2").equals("none")) {
                    typeIm2.ChangeImage("imagetype/" + res.getString("type2") + ".png", 15 ,68);
                }

                TypePanel.add(typeIm);
                TypePanel.add(typeIm2);

                BGP.changeValue(0, Integer.parseInt(res.getString("vie")));
                BGP.changeValue(1, Integer.parseInt(res.getString("attaque")));
                BGP.changeValue(2, Integer.parseInt(res.getString("def")));
                BGP.changeValue(3, Integer.parseInt(res.getString("Attaquespe")));
                BGP.changeValue(4, Integer.parseInt(res.getString("defspe")));
                BGP.changeValue(5, Integer.parseInt(res.getString("vitesse")));

                infos.add(TypePanel);
                Double base = Double.parseDouble(res.getString("vitesse"));
                Double vitesseMax = Math.floor(Math.floor((31 + 2 * base + Math.floor(252/4)) + 5)*1.1);
                Double vitesseMin = Math.floor(Math.floor((2 * base) + 5) * 0.9);
                infoVitesse.setText("Vitesse : " + Double.toString(vitesseMin) + " / " + Double.toString(vitesseMax));
                VitessePanel.add(infoVitesse);
                infos.add(VitessePanel);
            }
            catch (SQLException a) {a.printStackTrace();}
        }
    }
}
...