468x60
Visualizzazione post con etichetta netbeans. Mostra tutti i post
Visualizzazione post con etichetta netbeans. Mostra tutti i post

lunedì 8 novembre 2010

Deploy su singolo JAR con Netbeans

Ecco un ottimo tutorial su come effettuare il deploy su un unico file JAR di un'applicazione con Netbeans http://java.sun.com/developer/technicalArticles/java_warehouse/single_jar/

giovedì 14 ottobre 2010

iReport - report designer plugin per Netbeans

iReport è un fantastico report designer, di cui è disponibile anche un comodo plugin per Netbeans...

Da provare!

Background tasks con Netbeans - senza eventi

Ecco come creare un background task con Netbeans - senza eventi:


public Task myMethod() {


Task mT = new myTask(DesktopApplication.getApplication());
ApplicationContext appC = Application.getInstance().getContext();
TaskMonitor tM = appC.getTaskMonitor();
TaskService tS = appC.getTaskService();
tS.execute(mT);
tM.setForegroundTask(mT);


return mT;
}

mercoledì 8 settembre 2010

Netbeans "java.lang.IndexOutOfBoundsException: Index: 2, Size: 2 "

Questo problema l'ho riscontrato varie volte con Netbeans, ed è possibile risolverlo nel seguente modo:

la JList legata alla JTable deve essere impostata come observable.

venerdì 9 aprile 2010

Aggiornare la default JDK in Netbeans

Per aggiornare la JDK di default utilizzata da Netbeans bisogna editare il file netbeans.conf presente nella directory {netbeans install dir}/etc ed aggiornare il percorso di installazione della JDK presente nella riga dove si trova netbeans_jdkhome.

Se ad esempio la JDK utilizzata è la 1.6.0_19 ed il sistema operativo è WindowsXP, bisogna scrivere:
netbeans_jdkhome="C:\Program Files\Java\jdk1.6.0_19"

giovedì 25 marzo 2010

Netbeans "ArrayIndexOutOfBoundsException: 0 >= 0" in JTable binding

Vediamo come risolvere un problema che in Netbeans mi ha fatto impazzire abbastanza...

L'eccezione ArrayIndexOutOfBoundsException è lanciata perchè il ColumnModel del detailTable non è inizializzato immediatamente (quando viene eseguito il binding della tabella). Questo è un problema della libreria Beans Binding.

1. Seleziona la detailTable.
2. Seleziona la proprietà elements nella sezione Binding della finestra Properties.
3. Invoca il binding customizer (premendo il bottone '...').
4. Vai sul tab Advanced.
5. Premi il pulsante '...' vicino a Unreadable Source Value.
6. Seleziona 'Custom code' dalla combo-box in alto.
7. Digita java.util.Collections.emptyList() nel campo Property Code.
8. Premi OK per chiudere il property customizer per Unreadable Source Value.
9. Premi OK per chiudere il binding customizer.

Notare che il codice originale generato da NetBeans contiene già tutto questo. Lo hai rimosso rimuovendo il binding della tabella

martedì 23 marzo 2010

Java Database Desktop Application - interpret proxy exceptions

Sviluppando con Netbeans applicazioni Java Database Desktop capita di vedere eccezioni legate all'internet proxy. Questo problema è causato dallo Swing Application Framework.

Per risolverlo:
  1. aggiungere nella prima riga del metodo main() il codice ProxySelector.getDefault();
  2. aggiungere nel metodo startup() il codice System.setProperty("java.net.useSystemProxies", "false");

sabato 20 marzo 2010

JPA e Netbeans - rendere indipendente l'applicazione dal database

Se usate Netbeans e create le annotazioni JPA leggendo da un database già esistente, e volete rendere il programma indipendente dal tipo e dal nome di database...

modificate questo codice:
@Table(name = "tablename", catalog = "dbname", schema = "")

in:
@Table(name = "tablename")

giovedì 28 gennaio 2010

Refresh task asincrono in Netbeans Java Desktop Applications

Vediamo come creare un Task Asincrono per aggiornare una tabella di un'applicazione Java Desktop Database Application, senza avere problemi di binding, mediante Netbeans.

Utilizzare il codice seguente ed assegnare l'Action al pulsante "Refresh":

@Action
public Task refresh() {
return new RefreshTask(MyApp.getApplication());
}

private class RefreshTask extends Task {

RefreshTask(org.jdesktop.application.Application app) {
super(app);
}

@SuppressWarnings("unchecked")
@Override
protected Void doInBackground() {
setProgress(0, 0, 4);
setMessage("Rolling back the current changes...");
setProgress(1, 0, 4);
entityManager.getTransaction().rollback();
setProgress(2, 0, 4);

setMessage("Starting a new transaction...");
entityManager.getTransaction().begin();
setProgress(3, 0, 4);

setMessage("Fetching new data...");
java.util.Collection data = query.getResultList();
for (Object entity : data) {
entityManager.refresh(entity);
}
setProgress(4, 0, 4);

*masterTable.setVisible(false);

list.clear();
list.addAll(data);

return null;
}

@Override
protected void finished() {
setMessage("Done.");
setSaveNeeded(false);

masterTable.setVisible(true);
masterTable.revalidate();
masterTable.repaint();
}
}

mercoledì 20 gennaio 2010

Disabilitare chiusura Applicazione con Netbeans

Per disabilitare la chiusura di un'Applicazione Java Desktop sviluppata con Netbeans bisogna aggiungere un ExitListener, creandolo all'interno del metodo startup() creato da Netbeans. Vediamo come:
@Override
protected void startup() {

//Exit Listener
addExitListener(new ExitListener() {

public boolean canExit(EventObject event) {
System.out.println("canExit event occur");
getApplication().getMainFrame().setVisible(false);
return false;
}

public void willExit(EventObject event) {
System.out.println("willExit event occur");
}
});

show(new MyApp(this));
}

giovedì 14 gennaio 2010

Massimizzare JFrame con Netbeans

Lavorando con il GUI editor di Netbeans si nota l'estrema semplicità e potenza di questo strumento, tuttavia se si desidera avviare l'applicazione con il frame massimizzato bisogna customizzare il codice, nel seguente modo:
FrameView main = new FrameView(this);
final JFrame frame = main.getFrame();
frame.addWindowListener(new WindowAdapter() {

@Override
public void windowOpened(WindowEvent e) {
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
}
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setMinimumSize(new Dimension(800, 600));
show(main);
Buon lavoro!

martedì 12 gennaio 2010

UML in Netbeans

Attraverso un plugin open source è possibile avere il supporto all'UML in Netbeans. Vediamo come fare per installarlo:
  1. Installare NetBeans IDE 6.8
  2. Aprire il Menu Tools \ Plugins
  3. Aprere il tab Settings
  4. Cliccare Add
  5. Digitare il nome del provider (UML)
  6. In URL copiare ed incollare il seguente indirizzo: http://ea.ddns.com.br:8090/netbeans6.8/UML/catalog.xml
  7. Cliccare OK
  8. Assicurarsi che il plugin UML sia disponibile nella lista Available Plugins
  9. Adesso selezionare il plugin ed installarlo
  10. Il plugin deve essere attivato per poter essere utilizzato
  11. Per attivare il plugin andare nel Menu Tools \ Plugins \ Installed
  12. Attivare User Installed Plugins

martedì 22 dicembre 2009

ProgressBar e Tasks con Netbeans

Quando si crea una Java Desktop Application con Netbeans, vengono automaticamente generati il codice ed i componenti per l'utilizzo di una JProgressBar, di uno StatusPanel e di una AnimationLabel:

// status bar initialization - message timeout, idle icon and busy animation, etc
ResourceMap resourceMap = getResourceMap();
int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout");
messageTimer = new Timer(messageTimeout, new ActionListener() {

public void actionPerformed(ActionEvent e) {
statusMessageLabel.setText("");
}
});
messageTimer.setRepeats(false);
int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate");
for (int i = 0; i <>
busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]");
}
busyIconTimer = new Timer(busyAnimationRate, new ActionListener() {

public void actionPerformed(ActionEvent e) {
busyIconIndex = (busyIconIndex + 1) % busyIcons.length;
statusAnimationLabel.setIcon(busyIcons[busyIconIndex]);
}
});
idleIcon = resourceMap.getIcon("StatusBar.idleIcon");
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);

// connecting action tasks to status bar via TaskMonitor
taskMonitor = new TaskMonitor(getApplication().getContext());
taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() {

public void propertyChange(java.beans.PropertyChangeEvent evt) {
String propertyName = evt.getPropertyName();
if ("started".equals(propertyName)) {
if (!busyIconTimer.isRunning()) {
statusAnimationLabel.setIcon(busyIcons[0]);
busyIconIndex = 0;
busyIconTimer.start();
}
progressBar.setVisible(true);
progressBar.setIndeterminate(true);
} else if ("done".equals(propertyName)) {
busyIconTimer.stop();
statusAnimationLabel.setIcon(idleIcon);
progressBar.setVisible(false);
progressBar.setValue(0);
} else if ("message".equals(propertyName)) {
String text = (String) (evt.getNewValue());
statusMessageLabel.setText((text == null) ? "" : text);
messageTimer.restart();
} else if ("progress".equals(propertyName)) {
int value = (Integer) (evt.getNewValue());
progressBar.setVisible(true);
progressBar.setIndeterminate(false);
progressBar.setValue(value);
}
}
});

Se si desidera agganciare l'esecuzione di un proprio codice ai suddetti componenti, basta creare una classe che estenda la classe Task ed esegua in background il codice desiderato, nel seguente modo:

@Action
public Task avviaTask() {
return new MyTask(getApplication());
}

private class MyTask extends Task {

estrazioneTask(org.jdesktop.application.Application app) {
super(app);
}

@SuppressWarnings("unchecked")
@Override
protected Void doInBackground() {
setMessage("Working...");
//il codice va inserito qui

return null;
}

@Override
protected void finished() {
setMessage("Done.");
}
}

sabato 19 settembre 2009

Web Services per Axis2 con Netbeans

Sviluppando Web Services con Netbeans per il web services engine Axis2, ho dovuto affrontare il problema di dover esporre servizi richiedenti parametri complessi (dove i parametri complessi sono classi user defined).

Se i parametri sono una singola istanza di una classe (chiamiamola MyClass), il codice lato server sarà di questo tipo:
public void put(MyClass myclass);
public MyClass get();

Se i parametri sono una lista (o array) di istanze di una classe, il codice lato server sarà di questo tipo:
public void put(MyClass list[]);
public []MyClass get();

In entrambi i casi, una regola da ricordare è quella di aggiungere un costruttore di default
(senza parametri) alla classe MyClass

lunedì 27 luglio 2009

Debugging di Web Services con Netbeans e Tomcat

Per effettuare il debugging di Web Services su Tomcat con Netbeans sono necessarie due cose:
  1. eseguire Tomcat in debug mode
  2. aggiungere un debugger su Netbeans
Vediamo come fare in dettaglio...

Eseguire Tomcat in debug mode
Tomcat può essere eseguito in debug mode mediante un comando dalla shell oppure modificando gli script di startup.

- Dalla shell
C:\jdk_path\bin\java.exe -jar -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7001 -Duser.dir="C:\Tomcat_path" -Djava.endorsed.dirs="C:\Tomcat_path\common\endorsed" "C:\Tomcat_path\bin\bootstrap.jar" start

- Modificando gli script di startup
  1. Sotto Tomcat\bin fare una copia di "startup.bat" e chiamarla "startup_debug.bat"
  2. Fare una copia di "catalina.bat" e chiamarla "catalina_debug.bat"
  3. Modificare "startup_debug.bat", facendogli chiamare "catalina_debug.bat" invece di "catalina.bat"
  4. Modificare "catalina_debug.bat" aggiungendo lo switch -Xdebug nel seguente modo:
CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7001

Aggiungere un debugger su Netbeans
Eseguire i seguenti comandi dal Menu: Debug -> Attach Debugger... ->
Debugger: Java Debugger (JPDA)
Connector: SocketAttach
Host: localhost
Port: 7001


Adesso puoi settare i tuoi breakpoints e goderti il debugger...!

lunedì 15 giugno 2009

Specificare a runtime l'URL del WSDL con Netbeans

Netbeans è un ottimo IDE che offre notevoli strumenti per semplificare e rendere più produttivo lo sviluppo di applicazioni software. Ho trovato particolarmente utile il suo utilizzo anche nello sviluppo di Web Services in Java... A partire dall'indirizzo del WSDL o da un progetto Java esistente, Netbeans è in grado di generare automaticamente lo stub. Se dovesse servire cambiare a runtime l'endpoint è possibile farlo utilizzando il BindingProvider, fornendogli l'URL del WSDL come parametro. Vediamo un esempio:

WebserviceService service = new Service();
Webservice port = service.getPort();
String wsdlURL = "http://indirizzo_server_qui/service"; //(usare "service" NON "service?wsdl")
((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,wsdlURL
);

giovedì 30 aprile 2009

Netbeans - come aggiungere Componenti alla Palette

Probabilmente vi sarà capitato di voler installare nuovi componenti sulla Palette di Netbeans, ma siccome la cosa non è molto intuitiva la illustro passo-passo qui di seguito:

Per creare una palette di componenti in NetBeans 6.5:

  • Creare una libreria per i componenti:
    • selezionare "Tools | Library | New Library" dal menu
    • settare il nome della libreria (es. 'MyLibrary') e click OK
    • quando la nuova libreria è selezionata, click 'Add Jar/Folder'
    • selezionare i files jar della libreria e click 'Add jar/folder'
    • chiudere il library manager.
  • Installare i componenti di MyLibrary:
    • selezionare 'Tools | Palette | Swing/AWT Components' dal menu per aprire il Palette manager
    • creare una nuova categoria col bottone 'New Category'
    • selezionare la categoria creata e click su 'Add From Library'
    • selezionare la libreria 'MyLibrary' e click Next
    • selezionare tutti i components disponibili e click Next
    • selezionare la categoria 'MyLibrary', click su Finish e chiudi il palette manager.
  • Aggiungere la libreria ad un progetto. (Right-click sul nodo Libraries e selezionare 'Add Library').
468x60

Cerca su Google

Cerca nel Blog con Google