> Tous les forums > Forum Autres langages
 probleme avec des tableChanged en java
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
fourbiche
  Posté le 22/08/2005 @ 15:23 
Aller en bas de la page 
Nouvel astucien
Bonjour a tous ! voila je suis en trein d'essayer de realiser une petite application en java dans laquelle je me sert de TableModel. j'ai ajouter un listener sur ce TableModel, mais la partie de code qui est sensée s'executer au changement de valeur, c'est a dire la methode public void tableChanged(TableModelEvent e){} s'execute plusieur fois, je n'arrive pas a executer seulement une fois le code !!! package encaissement; import java.util.Locale; import java.text.DateFormat; import java.awt.GridLayout ; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.Vector; import javax.swing.DefaultCellEditor; import javax.swing.JButton; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JInternalFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import javax.swing.SpringLayout; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableColumn; import javax.swing.table.TableModel; import parametrage.ParamCaisse; import parametrage.ParamCatProd; import produits.Produit; public class FenEncaiss extends JInternalFrame implements ActionListener, TableModelListener, KeyListener { private Container pane ; private String[] TabPays = {"France","Allemagne","Angleterre","Autriche","Belgique","Bulgarie","Cicile","Espagne","Grece","Hollande","Irland","Italie","Portugal","Suisse","Etats-Unis"} ; private String[] TabModes = {"CB", "CHEQUE", "ESPECE", "Abonnement"} ; private JTextField Jtcp, Jtclient, Jtadr, Jtville, Jtmodes ; private JLabel La1, La2, La3, La4, La5, La6, La7, La8, La9, La10, La11, La12, La13, La14, La15, La16, La17 ; private JTable TableauProduits ; private int test = 0 , cptbillet = 0; private JButton Jb1, Jb2, Jb3, Jbtest ; private JComboBox ListePays ; private JComboBox ListeModes ; //private String[][] tabbillet ; //private Object[] tabinfos ; private Vector tabinfos = new Vector() ; public FenEncaiss(String titre) { super(titre,true,true,true,true) ; //--------------------------------------------------------------------------// setSize(800,600); setLocation(0,0); setAutoscrolls(true) ; pane = new Container() ; SpringLayout layout = new SpringLayout(); pane.setLayout(layout); La1 = new JLabel("PAYS") ; La2 = new JLabel("Code postal") ; La3 = new JLabel("Client : ") ; La4 = new JLabel("Adresse : ") ; La5 = new JLabel("Ville : ") ; ParamCaisse param = new ParamCaisse() ; String numCaisse = param.recup() ; La6 = new JLabel("CAISSE N°" + numCaisse) ; ListePays = new JComboBox(TabPays) ; Jtcp = new JTextField("",5) ; Jtclient = new JTextField(" VISITEUR ",20) ; Jtadr = new JTextField("",20) ; Jtville = new JTextField("",20) ; //--------------------------------------------------------------------------// //--------------------------------------------------------------------------// pane.add(La1) ; pane.add(La2) ; pane.add(ListePays) ; pane.add(Jtclient) ; pane.add(La3) ; pane.add(Jtcp) ; pane.add(La4) ; pane.add(Jtadr) ; pane.add(La5) ; pane.add(Jtville) ; //--------------------------------------------------------------------------// layout.putConstraint(SpringLayout.WEST, La1,50,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La1,60,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La2,120,SpringLayout.EAST, La1); layout.putConstraint(SpringLayout.NORTH, La2,60,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, ListePays,50,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, ListePays,15,SpringLayout.SOUTH, La1); layout.putConstraint(SpringLayout.WEST, Jtcp,0,SpringLayout.WEST, La2); layout.putConstraint(SpringLayout.NORTH, Jtcp,15,SpringLayout.SOUTH, La2); layout.putConstraint(SpringLayout.WEST, La3,50,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La3,15,SpringLayout.SOUTH, ListePays); layout.putConstraint(SpringLayout.WEST, Jtclient,120,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jtclient,15,SpringLayout.SOUTH, ListePays); layout.putConstraint(SpringLayout.WEST, La4,50,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La4,15,SpringLayout.SOUTH, La3); layout.putConstraint(SpringLayout.WEST, Jtadr,120,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jtadr,15,SpringLayout.SOUTH, Jtclient); layout.putConstraint(SpringLayout.WEST, La5,50,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La5,15,SpringLayout.SOUTH, La4); layout.putConstraint(SpringLayout.WEST, Jtville,120,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jtville,15,SpringLayout.SOUTH, Jtadr); //--------------------------------------------------------------------------// // FIN PARTIE CLIENT DEBUT PARTIE PRODUITS //--------------------------------------------------------------------------// Jb1 = new JButton("VALIDATION") ; Jb2 = new JButton("IMPRESSION") ; Jb3 = new JButton("ANNULATION") ; Jbtest = new JButton("test") ; pane.add(Jb1) ; pane.add(Jb2) ; pane.add(Jb3) ; pane.add(Jbtest); Jb1.addActionListener(this); Jb2.addActionListener(this); Jb3.addActionListener(this); Jbtest.addActionListener(this); layout.putConstraint(SpringLayout.WEST, Jb1,20,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jb1,50,SpringLayout.NORTH, Jtville); layout.putConstraint(SpringLayout.WEST, Jb2,20,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jb2,50,SpringLayout.NORTH, Jb1); layout.putConstraint(SpringLayout.WEST, Jb3,20,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jb3,50,SpringLayout.NORTH, Jb2); layout.putConstraint(SpringLayout.WEST, Jbtest,20,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jbtest,50,SpringLayout.NORTH, Jb3); //--------------------------------------------------------------------------// // FIN PARTIE PRODUIT DEBUT PARTIE INFOS //--------------------------------------------------------------------------// Date d = new Date() ; Locale locale = Locale.getDefault(); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale); La7 = new JLabel(dateFormat.format(d)) ; La8 = new JLabel("MONTANT TOTAL :") ; La9 = new JLabel("0") ; La10 = new JLabel("€") ; pane.add(La7) ; pane.add(La8) ; pane.add(La9) ; pane.add(La10) ; pane.add(La6) ; layout.putConstraint(SpringLayout.WEST, La7,450,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La7,70,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La8,450,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La8,90,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La9,5,SpringLayout.EAST, La8); layout.putConstraint(SpringLayout.NORTH, La9,90,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La10,5,SpringLayout.EAST, La9); layout.putConstraint(SpringLayout.NORTH, La10,90,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La6,450,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La6,50,SpringLayout.NORTH, pane); //--------------------------------------------------------------------------// // FIN PARTIE INFO DEBUT PARTIE PAIEMENT //--------------------------------------------------------------------------// La11 = new JLabel("Mode de paiement") ; La12 = new JLabel("Type") ; La13 = new JLabel("Montant") ; La14 = new JLabel("Nombre de billets") ; La15 = new JLabel("0") ; La16 = new JLabel("Rendu Monaie") ; La17 = new JLabel("0") ; ListeModes = new JComboBox(TabModes) ; Jtmodes = new JTextField("",5) ; pane.add(La11) ; pane.add(La12) ; pane.add(La13) ; pane.add(ListeModes) ; pane.add(Jtmodes) ; pane.add(La14) ; pane.add(La15) ; pane.add(La16) ; pane.add(La17) ; layout.putConstraint(SpringLayout.WEST, La11,550,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La11,210,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La12,550,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La12,240,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La13,670,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La13,240,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, ListeModes,550,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, ListeModes,260,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, Jtmodes,670,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, Jtmodes,260,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La14,550,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La14,300,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La15,670,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La15,300,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La16,550,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La16,330,SpringLayout.NORTH, pane); layout.putConstraint(SpringLayout.WEST, La17,670,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, La17,330,SpringLayout.NORTH, pane); Jtmodes.addKeyListener(this) ; ParamCatProd param2 = new ParamCatProd() ; Vector vect = param2.recupCat() ; Iterator it = vect.iterator() ; int cpt2 = 0 ; while(it.hasNext()) //pour chaque catégorie d'entrée { cpt2++; String cat = (String)it.next() ; String[] NomColones = {cat,"Prix","Quantité","Sous Total"}; ParamCatProd param3 = new ParamCatProd() ; Vector vectSousCat = param3.recupProd(cat); Iterator it2 = vectSousCat.iterator() ; Object[][] donne = new Object[vectSousCat.size()][] ; int cpt = 0 ; while(it2.hasNext()) { Produit prod = (Produit)it2.next() ; Object[] tab = {prod.getNom(),prod.getPrix()+"€","",""} ; donne[cpt] = tab ; cpt++; } CustomEditableCellTableModel model = new CustomEditableCellTableModel (donne, NomColones); TableauProduits = new JTable(model); int nbligne = model.getRowCount(); for(int i = 0 ; i<= nbligne ; i++) { model.addNotEditableCell (i, 0); model.addNotEditableCell (i, 1); model.addNotEditableCell (i, 3); } TableColumn colone2 = TableauProduits.getColumnModel().getColumn(2); JComboBox comboBox = new JComboBox(); comboBox.addItem("0") ; comboBox.addItem("1") ; comboBox.addItem("2") ; comboBox.addItem("3") ; comboBox.addItem("4") ; comboBox.addItem("5") ; comboBox.addItem("6") ; colone2.setCellEditor(new DefaultCellEditor(comboBox)); TableColumn column = null; for (int i = 0; i < 4; i++) { column = TableauProduits.getColumnModel().getColumn(i); if (i != 0) { column.setPreferredWidth(25); } } JScrollPane scrollPane = new JScrollPane(TableauProduits); scrollPane.setPreferredSize(new Dimension(350,100)); if(cpt>0) { pane.add(scrollPane) ; TableauProduits.getModel().addTableModelListener(this); } } //--------------------------------------------------------------------------// // couleur de fond de la fenêtre //--------------------------------------------------------------------------// pane.setBackground(new Color (200,200,230)); int cpt3 = 0 ; for(int cpt = 0 ; cpt < pane.getComponentCount() ; cpt++) { if(cpt>27) { layout.putConstraint(SpringLayout.WEST, pane.getComponent(cpt),150,SpringLayout.WEST, pane); layout.putConstraint(SpringLayout.NORTH, pane.getComponent(cpt),250+(cpt3*100),SpringLayout.NORTH, pane); cpt3++; } } getContentPane().setLayout(new GridLayout(1,1)); getContentPane().add(pane) ; //--------------------------------------------------------------------------// setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); setVisible(true) ; } public void keyPressed(KeyEvent evt){ } public void keyReleased(KeyEvent evt){ if(!La9.getText().equals("0")){ try{ Float f = new Float(Jtmodes.getText()) ; float fl = f.floatValue() ; String tmp = La9.getText() ; Float l = new Float(tmp) ; float lf = l.floatValue() ; rendumonaie(lf,fl) ; } catch(NumberFormatException e) { } } } public void rendumonaie(float tot, float don) { if(don>tot) La17.setText("" + (don-tot)) ; else La17.setText("0") ; } public void keyTyped(KeyEvent evt) { } public void actionPerformed(ActionEvent evt) { if (evt.getSource() instanceof JButton) { String ChoixOption = evt.getActionCommand(); if (ChoixOption.equals("VALIDATION")) { ParamCaisse param = new ParamCaisse() ; String numCaisse = param.recup() ; try { Date d = new Date() ; Locale locale = Locale.getDefault(); DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale); LogEncaisse log = new LogEncaisse() ; log.ecrire(TabPays[ListePays.getSelectedIndex()],Jtcp.getText(),Jtclient.getText(),Jtadr.getText(),Jtville.getText(),numCaisse,dateFormat.format(d),La9.getText(),La15.getText(),TabModes[ListeModes.getSelectedIndex()],Jtmodes.getText(),La17.getText()) ; log.enregistreFichier() ; } catch (Exception e) { e.printStackTrace(); } } else if(ChoixOption.equals("ANNULATION")) { /*Jtcp.setText("") ; Jtclient.setText(" VISITEUR") ; Jtadr.setText("") ; Jtville.setText("") ; ListePays.setSelectedIndex(0) ; La9.setText("0") ; La15.setText("0") ; La17.setText("0") ; ListeModes.setSelectedIndex(0) ; Jtmodes.setText("") ;*/ setVisible(false) ; } else if(ChoixOption.equals("test")) { System.out.println(tabinfos); } } } public void tableChanged(TableModelEvent e) { if (e.getType() != TableModelEvent.UPDATE) return; else{ int ligne = e.getFirstRow() ; try { System.out.println("bonjour") ; TableModel model = (TableModel)e.getSource() ; if(model.getRowCount()>0){ Object a = model.getValueAt(ligne,3) ; float ancien = 0 ; if(!a.equals("")){ Float anc = (Float)model.getValueAt(ligne,3) ; ancien = anc.floatValue() ;} float prix ; float nb ; String tmp = (String)model.getValueAt(ligne,1) ; String p = tmp.substring(0,tmp.length()-1) ; prix = new Float(p).floatValue(); nb = new Integer((String)model.getValueAt(ligne,2)).intValue() ; model.setValueAt(new Float(prix*nb),ligne,3) ; if(ancien<(prix*nb)) { Float la = new Float(La9.getText()) ; float la9 = la.floatValue() ; la9+= ((prix*nb)-ancien); String temp = "" + la9 ; La9.setText(temp) ; float ancienratio = ancien/prix ; cptbillet+=(nb-ancienratio) ; temp = "" + cptbillet ; La15.setText(temp) ; //---------------------------------------------------------------------- String nomcat = model.getColumnName(0) ; String nomsouscat = (String)model.getValueAt(ligne,0) ; //Object[] tab = {nomcat,nomsouscat,new Float(prix),new Float(nb)} ; //System.out.println(tab) ; //tabinfos.add(tab) ; tabinfos.add(nomcat+nomsouscat+new Float(prix)+":"+new Float(nb)) ; //System.out.println(nomcat+nomsouscat+new Float(prix)+":"+new Float(nb)) ; //---------------------------------------------------------------------- } else { Float la = new Float(La9.getText()) ; float la9 = la.floatValue() ; la9-=(ancien-(prix*nb)); String temp = "" + la9 ; La9.setText(temp) ; float ancienratio = ancien/prix ; cptbillet-=(ancienratio-nb) ; temp = "" + cptbillet ; La15.setText(temp) ; //---------------------------------------------------------------------- String nomcat = model.getColumnName(0) ; String nomsouscat = (String)model.getValueAt(ligne,0) ; //Object[] tab = {nomcat,nomsouscat,new Float(prix),new Float(nb)} ; //System.out.println(tab) ; tabinfos.add(nomcat+nomsouscat+new Float(prix)+":"+new Float(nb)) ; //System.out.println(nomcat+nomsouscat+new Float(prix)+":"+new Float(nb)) ; //---------------------------------------------------------------------- } } } catch(StackOverflowError ev) { } if(!La9.getText().equals("0")){ try{ Float f = new Float(Jtmodes.getText()) ; float fl = f.floatValue() ; String tmp = La9.getText() ; Float l = new Float(tmp) ; float lf = l.floatValue() ; rendumonaie(lf,fl) ; } catch(NumberFormatException ex) { } } } } } class CustomEditableCellTableModel extends DefaultTableModel { private ArrayList listCellNotEditable; public CustomEditableCellTableModel () { super (); this.listCellNotEditable = new ArrayList (); } public CustomEditableCellTableModel (int numRows, int numColumns) { super (numRows, numColumns); this.listCellNotEditable = new ArrayList (); } public CustomEditableCellTableModel (Vector columnNames, int numRows) { super (columnNames, numRows); this.listCellNotEditable = new ArrayList (); } public CustomEditableCellTableModel (Object[] columnNames, int numRows) { super (columnNames, numRows); this.listCellNotEditable = new ArrayList (); } public CustomEditableCellTableModel (Vector data, Vector columnNames) { super (data, columnNames); this.listCellNotEditable = new ArrayList (); } public CustomEditableCellTableModel (Object[][] data, Object[] columnNames) { super (data, columnNames); this.listCellNotEditable = new ArrayList (); } public void addNotEditableCell (int row, int column) { if ( ! (column >= 0 && column < this.getColumnCount ()) ) { return; } if ( ! ((row >= 0) && (row < this.getRowCount ())) ) { return; } this.listCellNotEditable.add (new Point (row, column)); } public void removeNotEditableCell (int row, int column) { int index = this.listCellNotEditable.indexOf (new Point (row, column)); if ( index != -1 ) { this.listCellNotEditable.remove (index); } } // surcharge de la methode afin de renvoyer false a toutes les cellules // marque comme non editable public boolean isCellEditable (int row, int column) { int index = this.listCellNotEditable.indexOf (new Point (row, column)); if ( index == -1 ) { return ( true ); } else { return ( false ); } } } bon j'ai mis tout le code de cette page (ça fait peut etre bcp mais bon...) voila le pb est ds la methode public void tableChanged(TableModelEvent e) , tt le code est executé plusieurs fois.... pkoi ? merci a tous
Publicité
breizhbugs
 Posté le 22/08/2005 à 17:17 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, C'est koi un TableModel? Bon j'ai pas lu le code mais voila: En supposant que ca ressemble a une zone d'edition, si tu rentres le mot "bonjour" au clavier, il y a 7 evenements, c'est a dire a chaque fois que tu rajoutes une lettre. donc le code est executer 7 fois. Donc le mieux pour savoir ce qui a change c'est que tu mette plein de println decrivant l'etat de ton truc, comme ca entre 2 execution tu compare et tu vois a quels evenement ca a reagi.
fourbiche
 Posté le 23/08/2005 à 09:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
yes merci, mais en fait je crois savoir d'ou vient le pb... un TableModel c'est ce qu'on utilise pour créer des tableau en java... En fait c'est quand j'utilise la methode SetValueAt(Object,int,int) sur le model pour changer la valeur d'une des case qu'il y a un soucis. En effet cela provoque une exception de type stackoverflow.... [bombe] je n'arrive toujours pas a changer une des valeurs sans avoir ce pb... j'ai bien essayé en faisant un try{....} catch(stackoverflow){....} mais c a ce moment la que le code est effectué plusieurs fois.... [boom] aidez moi please.....[rougir]
breizhbugs
 Posté le 23/08/2005 à 11:47 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Salut, Bon je fais plus de java depuis longtemps et je ne connais donc pas les fonction dont tu parles, toutefois j'ai remarquer ca: ... int ligne = e.getFirstRow() ; ... "Row" veut dire colonne, n'aurait tu pas confondu? Et donc tu accedes a une ligne qui n'existe pas donc stackoverflow?
fourbiche
 Posté le 23/08/2005 à 17:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Nouvel astucien
ben est tu vraiment sur que row veut dire ligne.... j'ai un vieux doute moi...[rougir] pouhh non mais la vraiment ça me saoul un peu les erreurs comme ça... mon code devient de plus en plus bordelique... ahahahahaaaa .... restons zen [chinois]
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour participer à la discussion.
Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !
Recevoir PC Astuces par e-mail


La Lettre quotidienne +226 000 inscrits
Avec l'actu, des logiciels, des applis, des astuces, des bons plans, ...

Les bonnes affaires
Une fois par semaine, un récap des meilleurs offres.

Les fonds d'écran
De jolies photos pour personnaliser votre bureau. Une fois par semaine.

Les nouveaux Bons Plans
Des notifications pour ne pas rater les bons plans publiés sur le site.

Les bons plans du moment PC Astuces

Tous les Bons Plans
7,99 €Lot de 3 câbles Topk USB-C (2 mètres, nylon tressé, charge rapide) à 7,99 €
9,99 € -20%

Amazon fait une promotion sur le lot de 3 câbles Topk USB-A vers USB-C (2 mètres, nylon tressé, charge rapide) à 7,99 € grâce à un coupon de réduction à activer sur la page du produit. On les trouve habituellement à partir de 9,99  €. 


Voir l'offre
69,99 €SSD Crucial P5 Plus 500 Go (3D NAND, NVMe, PCIe 4.0, M.2, 6600 Mo/s) à 69,99 €
94 € -26%

Amazon fait une promotion sur le SSD Crucial P5 Plus 500 Go (3D NAND, NVMe, PCIe 4.0, M.2) qui passe à 69,99 € livré gratuitement. On le trouve ailleurs à partir de 94 €. Ce SSD offre des vitesses de lecture/écriture séquentielle allant jusqu’à 6600/ 3 000 Mo/s. Il est garanti 5 ans.

Cette version Plus est compatible PCIe 4.0. Vous pouvez donc aussi l'utiliser avec la console de jeux PS5.


Voir l'offre
39,99 €Facebook Portal Mini à 39,99 €
149 € -73%

Amazon fait une belle promotion sur l'écran connecté Facebook Portal Mini qui passe à 39,99 € au lieu de 149 € ! Cet écran de 8 pouces vous permettra de faire des visio avec vos proches via Facebook Messenger ou WhatsApp (vos interlocuteurs peuvent être sur smartphone, tablette ou ordinateur). 

La fonctionnalité Smart Camera de Portal Mini vous suit et zoome automatiquement afin de toujours cadrer l'action, et Smart Sound améliore les voix tout en réduisant les bruits de fond. Vous aurez donc l'impression d'être dans la même pièce avec vos proches, même si des kilomètres vous séparent. Portal Mini affiche également des photos depuis Facebook, Instagram et votre téléphone. Et grâce à Alexa intégré, vous pourrez gérer votre maison connectée, consulter la météo, régler une minuterie et bien plus encore, en mode mains libres. 

Pratique pour rester en contact avec une personne âgée car il est très simple d'utilisation.


Voir l'offre
2,18 €Câble RJ45 Cat5e PremiumCord 5 m, Gigabit/LAN à 2,18 €
9,99 € -78%

Amazon fait une belle promotion sur le câble RJ45 Cat5e PremiumCord d'une longueur de 5 mètres, Gigabit/LAN à 2,18 € seulement. Câble compatible Gigabit (1000 Mbit/s) et jusqu'à Multi-G (2.5 et 5 Gbit/s). D'autres longueurs de câbles sont également en promotion : 1 mètre à 0,83 €, 3 mètres à 1,62 € et 10 mètres à 4,05 €.


Voir l'offre

Sujets relatifs
probleme avec les JTable en java
probleme avec java
probleme avec java
probleme avec java hs_err_pid3744
Problème avec la Java Virtual Machine
Ameliorer le Main "Java" avec les fonctions & procédures
Problème avec WinPython - Spyder
Problème avec les espaces C++
problème avec un parametre de requete preparée MVC
Problème Access avec 2 inner join
Plus de sujets relatifs à probleme avec des tableChanged en java
 > Tous les forums > Forum Autres langages