Partage
  • Partager sur Facebook
  • Partager sur Twitter

tracer une ligne dans une JFrame

problème avec le paintComponent

    16 février 2012 à 0:42:37

    Bonjour à tous,

    voici mon problème,

    j'ai une fenêtre dans lequel j'affiche des tables ( différentes tables contenues dans une base de données) et je voudrais tracer une ligne dans cette cette fenêtre après avoir créer les tables, et je n'ai pas bien compris comment appeler le paintComponent que j'ai créer.

    Donc si quelqu'un peux m'éclairer car j'arrive pas à voir comment ça marche (je dois être débile parce que j'ai beau regarder plusieurs tuto je ne comprend toujours pas et avec le debug je vois que je n’exécute jamais le paintComponent...)

    voici le code de la fenêtre :
    package creation_de_table;
    import java.awt.Graphics;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.sql.Connection;
    import java.util.*;
    import java.util.List;
    import javax.swing.*;
    
    import sun.java2d.loops.DrawLine;
    import ui.Connexion;
    import ui.EnumPanel;
    import ui.UIController;
    
    import cir.DAO_ForeignKey;
    import cir.UI_CIR;
    
    
    //Voir ligne 104 - utilité du listener
    public class UI_AffichageTables extends JFrame implements MouseListener, ActionListener
    {
    	private JPopupMenu popupMenu; 
    	private JMenuItem nouvelleTable;
    	private int x; 
    	private int y; 
    	private CTRL_CreationTable ctrl;
    	private UIController controlleurUI;
    	private static UI_AffichageTables instance = null;
    	private List<UI_Table> listeUiTables;
    	
    	private Connection connexion = null;
    	private DAO_ForeignKey daoFK = null;
    	
    	private UI_AffichageTables()
    	{
    		super("Création de Table");
    		
    		JDesktopPane desktop = new JDesktopPane();
    		ctrl = CTRL_CreationTable.getInstance();
    		ctrl.recupererTypes();
    		ctrl.recupererTables();
    		
    		controlleurUI = UIController.getInstance();
    		
    		connexion = Connexion.getInstance().getCx();
    		daoFK = DAO_ForeignKey.getInstance(connexion);
    		
    		listeUiTables = new ArrayList();
    		
    		popupMenu = new JPopupMenu();
    		nouvelleTable = new JMenuItem("Nouvelle Table");
    		nouvelleTable.addActionListener(this);
    		popupMenu.add(nouvelleTable);
    		//popupMenu.setLightWeightPopupEnabled(false);
    		
    	
    		
    		JMenuBar menuBar = new JMenuBar();
    		
    		JMenu serveur = new JMenu("Serveur");
    		serveur.setMnemonic(KeyEvent.VK_S);
    		serveur.getAccessibleContext().setAccessibleDescription("Actions liées au serveur");
    		serveur.setToolTipText("Actions liées au serveur");
    		menuBar.add(serveur);
    		
    		
    		JMenuItem deconnectionMI = new JMenuItem("Déconnection", KeyEvent.VK_D);
    		deconnectionMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D, ActionEvent.CTRL_MASK));
    		deconnectionMI.getAccessibleContext().setAccessibleDescription("Déconnexion du serveur");
    		deconnectionMI.setToolTipText("Déconnexion du serveur");
    		serveur.add(deconnectionMI);
    		deconnectionMI.addActionListener(this);
    		
    		
    		
    		JMenu tables = new JMenu("Tables");
    		tables.setMnemonic(KeyEvent.VK_T);
    		tables.getAccessibleContext().setAccessibleDescription("Actions liées aux tables");
    		tables.setToolTipText("Actions liées aux tables");
    		menuBar.add(tables);
    		
    		JMenuItem creerTableMI = new JMenuItem("Créer une table", KeyEvent.VK_C);
    		creerTableMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, ActionEvent.CTRL_MASK));
    		creerTableMI.getAccessibleContext().setAccessibleDescription("Création d'une table");
    		creerTableMI.setToolTipText("Création d'une table");
    		tables.add(creerTableMI);
    		creerTableMI.addActionListener(this);
    		
    		JMenuItem cirMI = new JMenuItem("Contraintes d'intégrité référentielle", KeyEvent.VK_I);
    		cirMI.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, ActionEvent.CTRL_MASK));
    		cirMI.getAccessibleContext().setAccessibleDescription("Création d'une contrainte d'intégrité référentielle");
    		cirMI.setToolTipText("Création d'une contrainte d'intégrité référentielle");
    		tables.add(cirMI);
    		cirMI.addActionListener(this);
    
    		
    		this.setJMenuBar(menuBar);
    		
    		
    		addMouseListener(this);
    		setContentPane(desktop);
    		pack();
    		//setSize(500,500);
    		setExtendedState(this.MAXIMIZED_BOTH);
    		setLocationRelativeTo(null);
    		setVisible(true);
    		setDefaultCloseOperation(EXIT_ON_CLOSE);
    		
    		dessinerTtLesTables();
    		
    	}
    	
    	public synchronized static UI_AffichageTables getInstance()
    	{
    		if(instance == null)
    		{
    			instance = new UI_AffichageTables();
    		}
    		return instance;
    	}
    
    	public void actionPerformed(ActionEvent e) 
    	{
    		String action = e.getActionCommand();
    		
    		if(nouvelleTable == (JMenuItem) e.getSource())
    		 {
    			 new UI_CreationEdition(/*x,y,this, ctrl.getTypes()*/new ArrayList());
    		 }
    		
    		if(action.equals("Déconnection")){
    			controlleurUI.closeConnection();
    			controlleurUI.setPanel(EnumPanel.CHOIXSGBD);
    			controlleurUI.setVisible(true);
    			this.dispose();
    		}
    		
    		if(action.equals("Créer une table")){
    			 new UI_CreationEdition(/*x,y,this, ctrl.getTypes()*/new ArrayList());
    		}
    		
    		if(action.equals("Contraintes d'intégrité référentielle")){
    			 new UI_CIR(listeUiTables);
    		}
    	}
    
    	public void mouseClicked(MouseEvent e){}
    
    	public void mouseEntered(MouseEvent e){}
    
    	public void mouseExited(MouseEvent e){}
    
    	public void mousePressed(MouseEvent e) 
    	{
    		if (e.getButton() == MouseEvent.BUTTON3)
    		 {
    			 	x = e.getX();
    			 	y = e.getY();
    				popupMenu.show(this, e.getX(),e.getY());
    		 }
    	}
    
    	public void mouseReleased(MouseEvent e) {}
    	
    	
    	public UI_Table getUiTable(String nomTable)
    	{
    		for(int i = 0; i < listeUiTables.size(); i++)
    		{
    			if(nomTable == listeUiTables.get(i).getNom())
    			{
    				return listeUiTables.get(i);
    			}
    		}
    		
    		return null;
    	}
    	
    	public void addUiTable(UI_Table table)
    	{
    		listeUiTables.add(table);
    	}
    	
    	public void effacerTable(String nomTable)
    	{
    		for(int i = 0; i < listeUiTables.size(); i++)
    		{
    			if(nomTable == listeUiTables.get(i).getNom())
    			{
    				remove(listeUiTables.get(i));
    				listeUiTables.remove(i);
    			}
    		}
    		repaint();
    	}
    	
    	public void dessinerTable(String nomTable, List<List<String>> structure)
    	{
    		UI_Table nouvelleTable =new UI_Table(nomTable, structure,10,10);
    		nouvelleTable.addMouseListener(this);
    		addUiTable(nouvelleTable);
    		add(nouvelleTable);
    	}
    	
    	public void dessinerTtLesTables()
    	{
    		List<Table> lesTable= ctrl.getListeTables();
    		
    		for(int i = 0; i < lesTable.size() ; i++)
    		{
    			dessinerTable(lesTable.get(i).getNomTable(),lesTable.get(i).getStructureTable());
    		}
    	}
    	
    	public void paintComponent(Graphics g){
    		super.paintComponents(g);
    		dessinerTtlesCIR(g);
    		repaint();
    	}
    	
    	@SuppressWarnings({ "rawtypes", "unchecked" })
    	private void dessinerTtlesCIR(Graphics g) {
    		List <Map> listFK = daoFK.ReadAll();
    		for(int i =0 ; i<listFK.size(); i++){
    			dessinerCIR(listFK.get(i),g);
    		}
    		
    		
    	}
    	
    	private void dessinerCIR( Map<String, String> map, Graphics g){
    		Point pPK,PFK;
    		pPK = getPoint(map.get("PKTABLE_NAME"), map.get("PKCOLUMN_NAME"));
    		g.drawLine(pPK.x, pPK.y,( pPK.x+200), pPK.y);
    		repaint();
    		
    	}
    	
    	private Point getPoint(String nomTable, String nomAttribut){
    		UI_Table table = getUiTable(nomTable);
    		for(int i =0; i< table.tableau.getColumnCount(); i++){
    			if(table.tableau.getValueAt(0, i).equals(nomAttribut));
    				double y = table.tableau.getCellRect(0, i, true).getY();
    				double x = table.tableau.getCellRect(0, i, true).getX();
    				Point p = new Point((int)x, (int)y) ;
    				return p;
    		}
    		return null;
    		
    	}
    
    }
    


    ça fait plusieurs heures que je suis sur ce problème je commence à désespérer.
    en tous cas merci d'avance pour votre aide
    • Partager sur Facebook
    • Partager sur Twitter

    tracer une ligne dans une JFrame

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown