Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader
BOOX Go 6 Gen II porta per la prima volta il supporto allo stilo su un e-reader da 6 pollici, affiancando 3 GB di RAM al collaudato Snapdragon 665 e un design rivisto con scocca posteriore a costolature. Su carta la proposta è interessante, ma Android 11 fuori supporto, l'assenza di un alloggiamento per il pennino e un'autonomia ridotta rispetto agli e-reader tradizionali sono i compromessi da accettare
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro
Lenovo Idea Tab Plus prova a portare un display da 12,1 pollici 2.5K, quattro speaker Dolby Atmos e una batteria da 10.200 mAh sotto la soglia psicologica dei 300 euro, penna inclusa. Lo abbiamo usato per oltre una settimana per capire dove l'azienda ha tagliato e dove invece ha tenuto il punto
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-06-2011, 21:08   #1
k_mishima
Member
 
Iscritto dal: Jan 2007
Messaggi: 173
[Java] Bug JComboBox

Salve, ho un bug che proprio non riesco a capire. In questa Gui che ho creato, c'è un menu a tendina che ho chiamato comboBoxYear. Questo menu funziona, cliccando sulla freccettina, si apre e mostra le stringhe che ho definito per esso.
La gui comprende anche dei bottoni che permettono di scegliere dei file dal computer, non capisco perché se scelgo un file, il menu si bugga e non funziona più, eppure i codici sono indipendenti, per quanto riguarda i listener

Spero voi sappiate che succede, sto impazzendo dietro questo bug
Codice:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.Rectangle;
import java.awt.TextField;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.io.File;
import java.sql.SQLException;
import java.util.Observable;
import java.util.Observer;
import javax.swing.SwingWorker;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;

import javax.swing.JTextArea;
import javax.swing.SwingUtilities;




public class CreateGUI extends SwingWorker<Boolean, Void> implements Observer {
	
	private final int contatoreProgressBar;
	private final PopolamentoOntologia po = new PopolamentoOntologia();
	private final JProgressBar progressBar;
	private final JFrame frame = new JFrame("Popolamento Ontologia");
		
	private String pathFashion;
	private String pathOntology;
	private String pathMondrian;
	private JFileChooser fileChooser = null;
	public JTextArea jTextArea = null;
	
	private boolean statoOperazione = false;

	private String[] chooseYear = {"anno", " 1997"," 2004"," 2005"," 2006"};
	private JComboBox comboBoxYear;
	private int annoSelezionato = 0;
	
	
	public CreateGUI(int contatore) {
		  
		//Colore di background dalla GUI
		Color bgColor = new Color(180,215,255);
		Color buttonColor = new Color(238,240,242);
		
		//ProgressBar programma
	    contatoreProgressBar = contatore;
	    this.progressBar = new JProgressBar();
	    this.progressBar.setValue(0);	//Valore iniziale JProgressBar
	    this.progressBar.setStringPainted(true);	//Numeri % sulla JProgressBar
	    this.progressBar.setMinimum(0);
	    this.progressBar.setMaximum(contatoreProgressBar);
	    this.progressBar.setBorder(BorderFactory.createMatteBorder(0, 0, 6, 6, bgColor));
	    this.progressBar.setBackground(buttonColor);


		//Create a file chooser
		fileChooser = new JFileChooser();
 
		//Bottone popolaOntologia
		final JButton buttonPopolaOntologia= new JButton("Popola Ontologia Vendite", new ImageIcon("image/iconBag.jpg"));
		buttonPopolaOntologia.setEnabled(false);
		buttonPopolaOntologia.setBackground(buttonColor);
		
		//Pannello 1
		Panel p1 = new Panel();
		JLabel labelFashion = new JLabel("Percorso eFashion:");
		p1.add(labelFashion);
		final TextField textFieldFashion = new TextField("", 50);
		p1.add(textFieldFashion);
		JButton sfogliaFashion = new JButton("Sfoglia", new ImageIcon("image/iconAccess.jpg"));
		sfogliaFashion.setBackground(buttonColor);
		sfogliaFashion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				int returnVal = fileChooser.showOpenDialog(frame);
				
				if (returnVal == JFileChooser.APPROVE_OPTION) {
					File file = fileChooser.getSelectedFile();
					setPathFashion(file.getPath());
					
					textFieldFashion.setText(file.getPath());
					if ((getPathOntology() != null) && (getPathMondrian() != null) && (annoSelezionato != 0)){
						buttonPopolaOntologia.setEnabled(true);
					}
				}
			}
		});
		p1.add(sfogliaFashion); 
		 
		//Pannello 2 
		Panel p2 = new Panel();
		JLabel labelMondrian = new JLabel("Percorso Mondrian:");
		p2.add(labelMondrian);
		final TextField textFieldMondrian = new TextField("", 50);
		p2.add(textFieldMondrian);
		JButton sfogliaMondrian = new JButton("Sfoglia", new ImageIcon("image/iconAccess.jpg"));
		sfogliaMondrian.setBackground(buttonColor);
		sfogliaMondrian.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg1) {
				int returnVal = fileChooser.showOpenDialog(frame);
					
				if (returnVal == JFileChooser.APPROVE_OPTION) {
					File file = fileChooser.getSelectedFile();
					setPathMondrian(file.getPath());
					textFieldMondrian.setText(file.getPath());
					if ((getPathOntology() != null) && (getPathFashion() != null) && (annoSelezionato != 0)){
						buttonPopolaOntologia.setEnabled(true);
					}
				}
			}
		});
		p2.add(sfogliaMondrian); 
		 
		//Pannello 3
		Panel p3 = new Panel();
		JLabel labelOntology = new JLabel("Percorso ontologia:  ");
		p3.add(labelOntology);
		final TextField textFieldOntology = new TextField("", 50);
		p3.add(textFieldOntology);
		JButton sfogliaOntology = new JButton("Sfoglia", new ImageIcon("image/iconProtege.gif"));
		sfogliaOntology.setBackground(buttonColor);
		sfogliaOntology.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg2) {
				int returnVal = fileChooser.showOpenDialog(frame);
					
				if (returnVal == JFileChooser.APPROVE_OPTION) {
					File file = fileChooser.getSelectedFile();
					setPathOntology(file.getPath());
					textFieldOntology.setText(file.getPath());
					if ((getPathFashion() != null) && (getPathMondrian() != null) && (annoSelezionato != 0)){
						buttonPopolaOntologia.setEnabled(true);
					}
				}
			}
		});
		p3.add(sfogliaOntology);
		
		//Pannello 4
		final Panel p4 = new Panel();
		p4.setLayout(new GridBagLayout());
		GridBagConstraints c = new GridBagConstraints();
		
		//Riga 1
		c.fill = GridBagConstraints.HORIZONTAL;
		c.gridy = 0;
		c.gridx = 0;
		p4.add(labelFashion, c);
		
		c.gridx = 1;
		p4.add(textFieldFashion, c);
		
		c.gridx = 4;
		p4.add(sfogliaFashion, c);
		
		//Riga 2
		c.gridy = 1;
		c.gridx = 0;
		p4.add(labelMondrian, c);
		
		c.gridx = 1;
		p4.add(textFieldMondrian, c);
		
		c.gridx = 4;
		p4.add(sfogliaMondrian, c);
		
		//Riga 3
		c.gridy = 2;
		c.gridx = 0;
		p4.add(labelOntology, c);
		
		c.gridx = 1;
		p4.add(textFieldOntology, c);
		
		c.gridx = 4;
		p4.add(sfogliaOntology, c);

		
		final JLabel labelYear = new JLabel("Seleziona l'anno:   ");

		comboBoxYear = new JComboBox(chooseYear);
		comboBoxYear.setOpaque(true);

	    comboBoxYear.addItemListener(new ItemListener(){
	        public void itemStateChanged(ItemEvent e) {
	        	int index = comboBoxYear.getSelectedIndex();
	            if (index == 0) 
	            	buttonPopolaOntologia.setEnabled(false);
	            else{
	            	annoSelezionato = Integer.parseInt(chooseYear[index].trim());
	            }
	          }
	    });
	    
		
	    //Pannello in alto
		Panel inputPanel = new Panel();
		inputPanel.add(p4);	
		inputPanel.add(labelYear);
		inputPanel.add(comboBoxYear);
	    inputPanel.add(buttonPopolaOntologia);



	    final JLabel status = new JLabel("Stato: Pronto per l'esecuzione");
	    status.setFont(new Font("Georgia", Font.BOLD, 11));
	    status.setBorder(BorderFactory.createMatteBorder(6, 5, 5, 5, bgColor));
	    jTextArea = new JTextArea();
	    jTextArea.setFont(new Font("Serif", Font.ITALIC, 16));
	    jTextArea.setLineWrap(true);
	    jTextArea.setWrapStyleWord(true);
	    jTextArea.setBorder(BorderFactory.createMatteBorder(3, 3, 3, 3, bgColor));
	    jTextArea.setEditable(false);	
	
	    JScrollPane jScrollPane = new JScrollPane(jTextArea);
	    jScrollPane.setBorder(BorderFactory.createMatteBorder(3, 3, 3, 3, bgColor));
	    jScrollPane.setPreferredSize(new Dimension(550, 150));
	    
	    final JLabel log = new JLabel("Log");
	    log.setFont(new Font("Georgia", Font.BOLD, 11));
	    log.setBorder(BorderFactory.createMatteBorder(0, 5, 5, 5, bgColor));
	    DrawLine line = new DrawLine();
	    line.setBorder(BorderFactory.createMatteBorder(3, 3, 3, 7, bgColor));
	    
        Panel logPanel = new Panel();
        logPanel.setLayout(new BorderLayout());
	    logPanel.add(log, BorderLayout.WEST);
	    logPanel.add(line, BorderLayout.CENTER);

	    Panel centerPanel = new Panel();
	    centerPanel.setLayout(new BorderLayout());
	    centerPanel.add(logPanel, BorderLayout.NORTH);
	    centerPanel.add(jScrollPane, BorderLayout.CENTER);
        
	    Panel southPanel = new Panel();
	    southPanel.setLayout(new GridLayout(1,2));
	    southPanel.add(status);
	    southPanel.add(this.progressBar);
	    southPanel.setBackground(bgColor);
	    
	    Panel p5 = new Panel();
	    p5.setLayout(new BorderLayout());
	    p5.add(centerPanel, BorderLayout.CENTER);
	    p5.add(southPanel, BorderLayout.SOUTH);
	    
	    
	    Container cp = this.frame.getContentPane();
	    this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	    cp.add(BorderLayout.CENTER, inputPanel);
	    cp.add(BorderLayout.SOUTH, p5);
	    cp.setBackground(bgColor);

	    
	    buttonPopolaOntologia.addActionListener(new ActionListener() {
	    	public void actionPerformed(ActionEvent evt) {
	        status.setText("Stato: Esecuzione...");
	        buttonPopolaOntologia.setEnabled(false);
	        p4.setEnabled(false);
	        Thread t = new Thread() {
	        	public void run() {
					try {
						statoOperazione = doInBackground();
						
					} catch (Exception e) {
						e.printStackTrace();
					}
	            
					SwingUtilities.invokeLater(new Runnable() {
						public void run() {
							if (statoOperazione)
								status.setText("Stato: Caricamento completato");
							else
								status.setText("Stato: Operazione fallita");
							// b.setEnabled(true);
						}
					});
	        	}
	        };
	        t.start();
	      }
	    });
	    this.frame.setSize(700, 380);
	    
	    //Centra la finestra nello schermo
	    Toolkit toolkit = Toolkit.getDefaultToolkit();
	    Dimension dim = toolkit.getScreenSize();
	    Rectangle abounds = frame.getBounds();
	    frame.setLocation((dim.width - abounds.width) / 2,
	        (dim.height - abounds.height) / 2);
	    
	    this.frame.setVisible(true);
	    //this.frame.setResizable(false);
	}

	public String getPathFashion(){
		return pathFashion;
	}
	 
	public String getPathMondrian(){
		return pathMondrian;
	}
	 
	 public String getPathOntology(){
		 return pathOntology;
	}
	 
	public void setPathFashion(String path){
		pathFashion = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + path + ";}"; 
	}
	 
	public void setPathMondrian(String path){
		pathMondrian = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + path + ";}"; 
	}
	 
	public void setPathOntology(String path){
		pathOntology = path; 
	}


    @Override public Boolean doInBackground() {

        this.po.addObserver(this);
       
		try {
			return this.po.ontologyPopolation(0, pathFashion, pathMondrian, pathOntology, annoSelezionato);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return true;

    }

    public void update(Observable o, Object arg) {
    	if (arg.toString().contains("++"))
    		this.jTextArea.append(arg.toString().substring(2));
    	else
    		this.progressBar.setValue(Integer.parseInt(arg.toString()));
    }
    
}
Codice:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;

import javax.swing.JComponent;


public class DrawLine extends JComponent {
	
	private static final long serialVersionUID = 1L;

	protected void paintComponent(Graphics g) {
        Insets i = getInsets();
        int w = getWidth();
        int h = getHeight();
        int x = i.left;
        int y= i.top;
        w -= i.left + i.right;
        h -= i.top + i.bottom;

        //Area x,y,w,h
        g.setColor(new Color(238,240,242));	
        Graphics2D g2 = (Graphics2D)g;
        g2.setStroke(new BasicStroke(2f));
        g2.drawLine(x, y + h/2, x + w, y + h/2);
        
    }
}
Scusate per il codice lungo, ma non ho idea di dove derivi l'errore, meglio postarlo per intero.

Ultima modifica di k_mishima : 11-06-2011 alle 21:09. Motivo: Avevo dimenticato il titolo
k_mishima è offline   Rispondi citando il messaggio o parte di esso
Old 12-06-2011, 16:19   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Ad una rapida occhiata non mi sembra che la jcombobox sia "usata male". Io punterei su un problema di threading. Usa un debugger per vedere se il programma si blocca da qualche parte. Bisognerebbe comunque capire cosa succeda dopo aver scelto il file. Scompare il contenuto della jcomboxbox, il sistema di blocca, è rilasciata una eccezione o cos'altro.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2011, 00:14   #3
k_mishima
Member
 
Iscritto dal: Jan 2007
Messaggi: 173
Non credo c'entrino i thread, sto facendo varie prove eliminando tutti la parte sui thread e il problema resta, piuttosto se sposto il menu a sinistra non si bugga, credo sia un problema di layout incasinati, ma non riesco a uscirne, il menu si trova sotto le text area e la deve stare, a sinistra sta male.
k_mishima è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2011, 00:23   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
non è che uno dei componenti awt che usi si sovrappone al menù a tendina? Prova a mettere come prima istruzione:

JPopupMenu.setDefaultLightWeightPopupEnabled(false);
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2011, 01:07   #5
k_mishima
Member
 
Iscritto dal: Jan 2007
Messaggi: 173
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
non è che uno dei componenti awt che usi si sovrappone al menù a tendina? Prova a mettere come prima istruzione:

JPopupMenu.setDefaultLightWeightPopupEnabled(false);

Ma sei un grande! Funziona, ci sbattevo da 2 giorni, grazie 1000!
k_mishima è offline   Rispondi citando il messaggio o parte di esso
Old 13-06-2011, 09:13   #6
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Se puoi non usare componenti awt (Panel, TextField) insieme a componenti Swing: usa solo quelli Swing (JPanel, JTextField).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 16-06-2011, 15:41   #7
k_mishima
Member
 
Iscritto dal: Jan 2007
Messaggi: 173
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Se puoi non usare componenti awt (Panel, TextField) insieme a componenti Swing: usa solo quelli Swing (JPanel, JTextField).
scusa il ritardo della risposta, cmq si, era quello il problema, usando solo elementi swing il bug non si presenta più
k_mishima è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Piccolo è bello: Cisco presenta A...
Z.AI avvia un data center da 1 gigawatt....
Microsoft e Mistral annunciano un accord...
Grazie al Very Large Telescope potrebbe ...
Sony FX5: RAW interno X-OCN e Open Gate ...
AMD e Anthropic, affare fatto: 5 miliard...
Cyber Arena Tour 2026, WINDTRE BUSINESS ...
Wistron ha aperto il primo stabilimento ...
"Così è facile perder...
Peak Design ripensa la staffa a L: il tr...
Samsung: ufficiale la serie Galaxy Z Fol...
Galaxy Watch Ultra2 e Watch9 ufficiali: ...
Un razzo spaziale Falcon 9 ha lanciato l...
Microlino: dal rischio di fallimento all...
SpaceX, uno stadio di Falcon 9 si schian...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 04:03.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v