Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
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


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
30 anni di PlayStation da indossare: arr...
Amazon lancia gli Echo più potent...
Amazon rinnova la gamma Fire TV: ecco le...
Ring lancia le sue prime videocamere con...
Blink amplia la gamma di videocamere di ...
Jaguar Land Rover riprende (gradualmente...
HONOR inaugura il primo ALPHA Flagship S...
Yamaha: ecco il brevetto del 'finto moto...
'Console obsoleta e utenti ingannati': u...
Stop al ransomware su Google Drive, graz...
L'IA è la nuova interfaccia utent...
Battlefield 6: confermata la dimensione ...
Windows 11 porta il Wi-Fi 7 alle aziende...
Logitech MX Master 4 subito disponibile ...
'Nonna Skyrim' dice addio all'RPG di Bet...
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: 17:17.


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