我是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");
}
});
}
}
请有人可以帮助我吗?提前致谢。 (对不起,我是法国人,所以我的英语不完美)
答案 0 :(得分:1)
Panel pan = new Panel();
this.setContentPane(pan);
Panel
是AWT组件。不要在Swing应用程序中混合使用AWT组件。
相反,您应该使用JPanel
。
我必须将鼠标放在该按钮上才能显示它
this.setVisible(true);
应在框架可见之前将组件添加到框架。 setVisible(true)
语句应该是构造函数的最后一条语句。