我的应用程序的用户界面存在多个问题



我是Java的新手,尤其是用户界面部分,我想展示我遇到的不同问题以解决它们。

1-当我启动应用程序时,这就是我希望它显示的内容:

https://i.stack.imgur.com/6pnf4.png

然而,每次我启动应用程序时都会发生这种情况:

https://i.stack.imgur.com/gQda6.png

我必须把我的鼠标放在按钮所在的位置才能显示

2-当我最小化应用程序并返回时,会发生以下情况:

https://i.stack.imgur.com/VMCas.png

3-当我开始处理我的数据时,我希望界面显示应用程序的当前状态(例如百分比(,如下所示:

https://i.stack.imgur.com/Pfhdo.png

然而,这只是在操作结束时发生的。与此同时,我认为我的界面冻结了,它给了我这个:

https://i.stack.imgur.com/ewRqj.png

我不知道为什么会发生这样的事。除此之外,我的应用程序运行得很好,并且完成了我被编程要做的事情

import javax.swing.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.filechooser.*;
import Etape.ExportCSV;
import Etape.PlanTransport;
import Etape.PlanTriTCC;
import Etape.StatsTCC;
@SuppressWarnings("serial")
public class Fenetre extends JFrame {
boolean valid1;
boolean valid2;
boolean valid3;
boolean valid4;
String emplac1;
String emplac2;
String emplac3;
String emplac4;
String cheminactuel;
public Fenetre(){
valid1=false;
valid2=false;
valid3=false;
valid4=false;
this.setTitle("Traitement des données Statistiques du Trieur TCC");
this.setSize(600, 350);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
Panel pan = new Panel();
this.setContentPane(pan);
this.setVisible(true);
FileNameExtensionFilter filterCSV = new FileNameExtensionFilter("CSV files (*csv)", "csv");
FileNameExtensionFilter filterAutre = new FileNameExtensionFilter("403 files (*403)", "403");
JTextField tfbegin=new JTextField();
tfbegin.setBounds(150,260,300,20);
tfbegin.setEditable(false);
pan.add(tfbegin);
JButton begin=new JButton("Commencer");
begin.setBounds(248,230,105,20);
pan.add(begin);
begin.setEnabled(false);
JTextField tf=new JTextField();
tf.setBounds(25,100,150,20);
tf.setEditable(false);
pan.add(tf);
JButton b=new JButton("Selection");
b.setBounds(53,130,87,20);
pan.add(b);
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser jfc;
if(valid1==true || valid2==true || valid3==true || valid4==true) {
jfc = new JFileChooser(cheminactuel);
}
else {
jfc = new JFileChooser();
}
jfc.setFileFilter(filterCSV);
int returnValue = jfc.showOpenDialog(null);
if (returnValue == JFileChooser.APPROVE_OPTION) {
File selectedFile = jfc.getSelectedFile();
emplac1=selectedFile.getAbsolutePath();
tf.setText(emplac1);
valid1=true;
int test= emplac1.lastIndexOf("\");
cheminactuel=emplac1.substring(0,test);
if (valid1==true && valid2==true && valid3==true && valid4==true) {
begin.setEnabled(true);
}
}
}
});
JTextField tf2=new JTextField();
tf2.setBounds(225,100,150,20);
tf2.setEditable(false);
pan.add(tf2);
JButton b2=new JButton("Selection");
b2.setBounds(255,130,87,20);
pan.add(b2);
b2.addActionListener(new ActionListener(){
JFileChooser jfc2;
public void actionPerformed(ActionEvent e){
if(valid1==true || valid2==true || valid3==true || valid4==true) {
jfc2 = new JFileChooser(cheminactuel);
}
else {
jfc2 = new JFileChooser();
}
jfc2.setFileFilter(filterAutre);
int returnValue2 = jfc2.showOpenDialog(null);
if (returnValue2 == JFileChooser.APPROVE_OPTION) {
File selectedFile2 = jfc2.getSelectedFile();
emplac2=selectedFile2.getAbsolutePath();
tf2.setText(emplac2);
valid2=true;
int test= emplac2.lastIndexOf("\");
cheminactuel=emplac2.substring(0,test);
if (valid1==true && valid2==true && valid3==true && valid4==true) {
begin.setEnabled(true);
}
}
}
});
JTextField tf3=new JTextField();
tf3.setBounds(425,100,150,20);
tf3.setEditable(false);
pan.add(tf3);
JButton b3=new JButton("Selection");
b3.setBounds(455,130,87,20);
pan.add(b3);
b3.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser jfc3;
if(valid1==true || valid2==true || valid3==true || valid4==true) {
jfc3 = new JFileChooser(cheminactuel);
}
else {
jfc3 = new JFileChooser();
}
jfc3.setFileFilter(filterCSV);
int returnValue3 = jfc3.showOpenDialog(null);
if (returnValue3 == JFileChooser.APPROVE_OPTION) {
File selectedFile3 = jfc3.getSelectedFile();
emplac3=selectedFile3.getAbsolutePath();
tf3.setText(emplac3);
valid3=true;
int test= emplac3.lastIndexOf("\");
cheminactuel=emplac3.substring(0,test);
if (valid1==true && valid2==true && valid3==true && valid4==true) {
begin.setEnabled(true);
}
}
}
});
JTextField tf4=new JTextField();
tf4.setBounds(25,190,400,20);
tf4.setEditable(false);
pan.add(tf4);
JButton b4=new JButton("Selection");
b4.setBounds(475,190,87,20);
pan.add(b4);
b4.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser jfc4;
if(valid1==true || valid2==true || valid3==true || valid4==true) {
jfc4 = new JFileChooser(cheminactuel);
}
else {
jfc4 = new JFileChooser();
}
jfc4.setFileFilter(filterCSV);
int returnValue4 = jfc4.showOpenDialog(null);
if (returnValue4 == JFileChooser.APPROVE_OPTION) {
File selectedFile4 = jfc4.getSelectedFile();
emplac4=selectedFile4.getAbsolutePath();
tf4.setText(emplac4);
valid4=true;
int test= emplac4.lastIndexOf("\");
cheminactuel=emplac4.substring(0,test);
if (valid1==true && valid2==true && valid3==true && valid4==true) {
begin.setEnabled(true);
}
}
}
});
begin.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
StatsTCC con = new StatsTCC();
tfbegin.setText("Creation de la base de donnée.");
con.insertion(emplac1);
con.modification();
PlanTriTCC reg = new PlanTriTCC(emplac2);
tfbegin.setText("Recherche et intertion des regles.");
reg.initialisation();
reg.ajoutTable();
reg.selection();
reg.trouvRegle();
reg.suppression();
PlanTransport db = new PlanTransport(emplac3);
tfbegin.setText("Recherche et intertion des horaires.");
db.initialisation();
db.ajoutTable();
db.selection();
db.trouvLiaison();
db.suppression();
@SuppressWarnings("unused")
ExportCSV fichier = new  ExportCSV(emplac4);
b.setEnabled(false);
b2.setEnabled(false);
b3.setEnabled(false);
b4.setEnabled(false);
begin.setEnabled(false);
tfbegin.setText("Operation termine. Fichier csv disponible");
}
});
}
}

有人能帮我吗?提前谢谢。(对不起,我是法国人,所以我的英语不完美(

Panel pan = new Panel();
this.setContentPane(pan);

CCD_ 1是AWT组件。不要在Swing应用程序中混合AWT组件。

相反,您应该使用JPanel

我必须把鼠标放在按钮所在的位置才能显示

this.setVisible(true);

在使框架可见之前,应将组件添加到框架中。setVisible(true)语句应该是构造函数的最后一条语句。

最新更新