В 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();}
}
}
}