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

时间:2018-07-25 13:42:42

标签: java swing interface

我是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");
      }
    });
  }
}

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

1 个答案:

答案 0 :(得分:1)

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

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

相反,您应该使用JPanel

  

我必须将鼠标放在该按钮上才能显示它

this.setVisible(true);

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