View Full Version : [Java] Accedere a Risorse Thread - Genymus
Salve e Buon Anno a tutti.
Ho creato una GUI con l'aiuto di Netbeans, sviluppando l'applicazione mi sono imbattuto in un'imprevisto.
Quando ho creato il frame, Netbeans ha avviato automaticamente una nuova istanza, impedendomi di accedere alle risorse tramite metodi statici...
Mi spiego meglio:
La gui ha una JTextArea a cui vorrei accedere da una funzione esterna all'istanza della gui.
Qualcuno ha la soluzione?
franksisca
03-01-2012, 18:01
Salve e Buon Anno a tutti.
Ho creato una GUI con l'aiuto di Netbeans, sviluppando l'applicazione mi sono imbattuto in un'imprevisto.
Quando ho creato il frame, Netbeans ha avviato automaticamente una nuova istanza, impedendomi di accedere alle risorse tramite metodi statici...
Mi spiego meglio:
La gui ha una JTextArea a cui vorrei accedere da una funzione esterna all'istanza della gui.
Qualcuno ha la soluzione?
perchè usare metodi statici? non puoi "implementare" la parte grafica nella tua progettazione???
io di solito lavoro seguendo l'MVC pattern, ovvero separo le 3 "fasi" in modo indipendente, creo la grafica nel package view, creo i modelli nel package model e poi nel controller metto tutte le classi che fanno il lavoro sporco.
Il problema è che affidandomi a Netbeans per creare il Jframe, automaticamente la creazione avviene tramite un thread...
Solo che poi non riesco più ad accedere alle risorse del thread in questione.
Ps: sono alle prime armi con java, ed è la prima vera volta che programmo solamente ad oggetti.
Grazie
Posta un po' di codice interessato. Mi sembra strano quello che dici.
Ecco tutto il codice della Classe gui:
package Gui;
import java.awt.event.*;
import java.awt.*;
public class gui extends javax.swing.JFrame {
private void setComponents() {
if (Modules.filesystem.readConfig() != true) {
Console.append("Fallita.");
this.setEnabled(true);
} else {
if (Modules.variables.config.containsKey("activators")) {
Servers.init.main(Modules.variables.config.get("activators"));
Console.append("Eseguita.");
this.setEnabled(true);
} else {
Console.append("Fallita.");
this.setEnabled(true);
}
}
}
public gui() {
initComponents();
Dimension dim = getToolkit().getScreenSize();
this.setLocation(dim.width/2-this.getWidth()/2,dim.height/2-this.getHeight()/2);
Console.setText("Inizializzazione... ");
setComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
cmd_operators = new javax.swing.JToggleButton();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
cmd_clients = new javax.swing.JToggleButton();
jLabel7 = new javax.swing.JLabel();
cmd_modules = new javax.swing.JToggleButton();
jLabel10 = new javax.swing.JLabel();
cmd_mysql = new javax.swing.JToggleButton();
port_operators = new javax.swing.JLabel();
number_operators = new javax.swing.JLabel();
jLabel8 = new javax.swing.JLabel();
port_clients = new javax.swing.JLabel();
jLabel11 = new javax.swing.JLabel();
number_clients = new javax.swing.JLabel();
number_modules = new javax.swing.JLabel();
jLabel15 = new javax.swing.JLabel();
port_modules = new javax.swing.JLabel();
jLabel13 = new javax.swing.JLabel();
jLabel19 = new javax.swing.JLabel();
address_mysql = new javax.swing.JLabel();
jLabel17 = new javax.swing.JLabel();
port_mysql = new javax.swing.JLabel();
input_terminal = new javax.swing.JTextField();
jLabel21 = new javax.swing.JLabel();
jScrollPane1 = new javax.swing.JScrollPane();
Console = new javax.swing.JTextArea();
cmdErase = new javax.swing.JLabel();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu4 = new javax.swing.JMenu();
file_config = new javax.swing.JMenuItem();
jSeparator1 = new javax.swing.JPopupMenu.Separator();
file_close = new javax.swing.JMenuItem();
jMenu1 = new javax.swing.JMenu();
operators_new = new javax.swing.JMenuItem();
operators_edit = new javax.swing.JMenu();
operators_delete = new javax.swing.JMenu();
jSeparator2 = new javax.swing.JPopupMenu.Separator();
operators_manager = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
clients_new = new javax.swing.JMenuItem();
clients_edit = new javax.swing.JMenu();
clients_delete = new javax.swing.JMenu();
jSeparator3 = new javax.swing.JPopupMenu.Separator();
clients_manager = new javax.swing.JMenuItem();
jMenu3 = new javax.swing.JMenu();
modules_new = new javax.swing.JMenuItem();
modules_edit = new javax.swing.JMenu();
modules_delete = new javax.swing.JMenu();
jSeparator4 = new javax.swing.JPopupMenu.Separator();
modules_manager = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("PWA Server Edition v1.0.0");
setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
setEnabled(false);
setName("guiForm"); // NOI18N
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
jPanel1.setBackground(new java.awt.Color(153, 153, 153));
jPanel1.setName("ServersPanel"); // NOI18N
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel1.setText("Server Operatore");
jLabel1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel1.setName("jLabel1"); // NOI18N
cmd_operators.setFont(new java.awt.Font("Tahoma", 1, 11));
cmd_operators.setText("Attiva");
cmd_operators.setName("cmd_operators"); // NOI18N
cmd_operators.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmd_operatorsItemStateChanged(evt);
}
});
jLabel2.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel2.setText("Porta:");
jLabel2.setName("jLabel2"); // NOI18N
jLabel3.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel3.setText("Connessioni:");
jLabel3.setName("jLabel3"); // NOI18N
jLabel4.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel4.setText("Server Clienti");
jLabel4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel4.setName("jLabel4"); // NOI18N
cmd_clients.setFont(new java.awt.Font("Tahoma", 1, 11));
cmd_clients.setText("Attiva");
cmd_clients.setName("cmd_clients"); // NOI18N
cmd_clients.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmd_clientsItemStateChanged(evt);
}
});
jLabel7.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel7.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel7.setText("Server Moduli");
jLabel7.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel7.setName("jLabel7"); // NOI18N
cmd_modules.setFont(new java.awt.Font("Tahoma", 1, 11));
cmd_modules.setText("Attiva");
cmd_modules.setName("cmd_modules"); // NOI18N
cmd_modules.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmd_modulesItemStateChanged(evt);
}
});
jLabel10.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel10.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
jLabel10.setText("Server MySQL");
jLabel10.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel10.setName("jLabel10"); // NOI18N
cmd_mysql.setFont(new java.awt.Font("Tahoma", 1, 11));
cmd_mysql.setText("Attiva");
cmd_mysql.setName("cmd_mysql"); // NOI18N
cmd_mysql.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
cmd_mysqlItemStateChanged(evt);
}
});
port_operators.setFont(new java.awt.Font("Tahoma", 0, 12));
port_operators.setText("N.D.");
port_operators.setName("port_operators"); // NOI18N
number_operators.setFont(new java.awt.Font("Tahoma", 0, 12));
number_operators.setText("N.D.");
number_operators.setName("number_operators"); // NOI18N
jLabel8.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel8.setText("Porta:");
jLabel8.setName("jLabel8"); // NOI18N
port_clients.setFont(new java.awt.Font("Tahoma", 0, 12));
port_clients.setText("N.D.");
port_clients.setName("port_clients"); // NOI18N
jLabel11.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel11.setText("Connessioni:");
jLabel11.setName("jLabel11"); // NOI18N
number_clients.setFont(new java.awt.Font("Tahoma", 0, 12));
number_clients.setText("N.D.");
number_clients.setName("number_clients"); // NOI18N
number_modules.setFont(new java.awt.Font("Tahoma", 0, 12));
number_modules.setText("N.D.");
number_modules.setName("number_modules"); // NOI18N
jLabel15.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel15.setText("Connessioni:");
jLabel15.setName("jLabel15"); // NOI18N
port_modules.setFont(new java.awt.Font("Tahoma", 0, 12));
port_modules.setText("N.D.");
port_modules.setName("port_modules"); // NOI18N
jLabel13.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel13.setText("Porta:");
jLabel13.setName("jLabel13"); // NOI18N
jLabel19.setFont(new java.awt.Font("Tahoma", 0, 12));
jLabel19.setText("Address:");
jLabel19.setName("jLabel19"); // NOI18N
address_mysql.setFont(new java.awt.Font("Tahoma", 0, 12));
address_mysql.setText("N.D.");
address_mysql.setName("address_mysql"); // NOI18N
jLabel17.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
jLabel17.setText("Db:");
jLabel17.setName("jLabel17"); // NOI18N
port_mysql.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
port_mysql.setText("N.D.");
port_mysql.setName("port_mysql"); // NOI18N
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(cmd_operators, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(cmd_clients, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(jLabel4, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(cmd_modules, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(jLabel7, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(cmd_mysql, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, 149, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(port_operators, javax.swing.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(number_operators, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(port_clients, javax.swing.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel11)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(number_clients, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel13)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(port_modules, javax.swing.GroupLayout.DEFAULT_SIZE, 110, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel15)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(number_modules, javax.swing.GroupLayout.DEFAULT_SIZE, 76, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel19)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(address_mysql, javax.swing.GroupLayout.DEFAULT_SIZE, 96, Short.MAX_VALUE))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel17)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(port_mysql, javax.swing.GroupLayout.DEFAULT_SIZE, 124, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cmd_operators, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(port_operators))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(number_operators))
.addGap(18, 18, 18)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cmd_clients, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel8)
.addComponent(port_clients))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel11)
.addComponent(number_clients))
.addGap(18, 18, 18)
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cmd_modules, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel13)
.addComponent(port_modules))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel15)
.addComponent(number_modules))
.addGap(18, 18, 18)
.addComponent(jLabel10)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(cmd_mysql, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel19)
.addComponent(address_mysql))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel17)
.addComponent(port_mysql))
.addContainerGap(28, Short.MAX_VALUE))
);
input_terminal.setName("input_terminal"); // NOI18N
input_terminal.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
input_terminalKeyPressed(evt);
}
});
jLabel21.setFont(new java.awt.Font("Tahoma", 1, 12));
jLabel21.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
jLabel21.setText("Terminale Server:");
jLabel21.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jLabel21.setName("jLabel21"); // NOI18N
jScrollPane1.setName("jScrollPane1"); // NOI18N
Console.setColumns(20);
Console.setEditable(false);
Console.setRows(5);
Console.setName("Console"); // NOI18N
jScrollPane1.setViewportView(Console);
Console.getAccessibleContext().setAccessibleName("Console");
Console.getAccessibleContext().setAccessibleDescription("");
cmdErase.setFont(new java.awt.Font("Tahoma", 1, 11));
cmdErase.setForeground(new java.awt.Color(0, 0, 255));
cmdErase.setText("Cancella");
cmdErase.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
cmdErase.setName("cmdErase"); // NOI18N
cmdErase.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
cmdEraseMouseClicked(evt);
}
});
jMenuBar1.setName("jMenuBar1"); // NOI18N
jMenu4.setText("File");
jMenu4.setName("jMenu4"); // NOI18N
file_config.setText("Configurazione");
file_config.setName("file_config"); // NOI18N
file_config.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
file_configActionPerformed(evt);
}
});
jMenu4.add(file_config);
jSeparator1.setName("jSeparator1"); // NOI18N
jMenu4.add(jSeparator1);
file_close.setText("Esci");
file_close.setName("file_close"); // NOI18N
file_close.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
file_closeActionPerformed(evt);
}
});
jMenu4.add(file_close);
jMenuBar1.add(jMenu4);
jMenu1.setText("Operatori");
jMenu1.setName("jMenu1"); // NOI18N
operators_new.setText("Nuovo");
operators_new.setName("operators_new"); // NOI18N
jMenu1.add(operators_new);
operators_edit.setText("Modifica");
operators_edit.setName("operators_edit"); // NOI18N
jMenu1.add(operators_edit);
operators_delete.setText("Elimina");
operators_delete.setName("operators_delete"); // NOI18N
jMenu1.add(operators_delete);
jSeparator2.setName("jSeparator2"); // NOI18N
jMenu1.add(jSeparator2);
operators_manager.setText("Gestione Operatori");
operators_manager.setName("operators_manager"); // NOI18N
jMenu1.add(operators_manager);
jMenuBar1.add(jMenu1);
jMenu2.setText("Clienti");
jMenu2.setName("jMenu2"); // NOI18N
clients_new.setText("Nuovo");
clients_new.setName("clients_new"); // NOI18N
jMenu2.add(clients_new);
clients_edit.setText("Modifica");
clients_edit.setName("clients_edit"); // NOI18N
jMenu2.add(clients_edit);
clients_delete.setText("Elimina");
clients_delete.setName("clients_delete"); // NOI18N
jMenu2.add(clients_delete);
jSeparator3.setName("jSeparator3"); // NOI18N
jMenu2.add(jSeparator3);
clients_manager.setText("Gestione Clienti");
clients_manager.setName("clients_manager"); // NOI18N
jMenu2.add(clients_manager);
jMenuBar1.add(jMenu2);
jMenu3.setText("Moduli");
jMenu3.setName("jMenu3"); // NOI18N
modules_new.setText("Nuovo");
modules_new.setName("modules_new"); // NOI18N
jMenu3.add(modules_new);
modules_edit.setText("Modifica");
modules_edit.setName("modules_edit"); // NOI18N
jMenu3.add(modules_edit);
modules_delete.setText("Elimina");
modules_delete.setName("modules_delete"); // NOI18N
jMenu3.add(modules_delete);
jSeparator4.setName("jSeparator4"); // NOI18N
jMenu3.add(jSeparator4);
modules_manager.setText("Gestione Moduli");
modules_manager.setName("modules_manager"); // NOI18N
jMenu3.add(modules_manager);
jMenuBar1.add(jMenu3);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 467, Short.MAX_VALUE)
.addComponent(input_terminal, javax.swing.GroupLayout.DEFAULT_SIZE, 467, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel21, javax.swing.GroupLayout.PREFERRED_SIZE, 128, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 292, Short.MAX_VALUE)
.addComponent(cmdErase)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel21)
.addComponent(cmdErase))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 407, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(input_terminal, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4))
);
getAccessibleContext().setAccessibleName("guiForm");
pack();
}// </editor-fold>
private void input_terminalKeyPressed(java.awt.event.KeyEvent evt) {
if (evt.getKeyCode()==10) {
System.out.print("Key");
//Parser
}
}
private void cmd_operatorsItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED) {
cmd_operators.setText("Disattiva");
//Comandi Attivazione Server
} else {
cmd_operators.setText("Attiva");
//Comandi Disattivazione Server
}
}
private void cmd_clientsItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED) {
cmd_clients.setText("Disattiva");
//Comandi Attivazione Server
} else {
cmd_clients.setText("Attiva");
//Comandi Disattivazione Server
}
}
private void cmd_modulesItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED) {
cmd_modules.setText("Disattiva");
//Comandi Attivazione Server
} else {
cmd_modules.setText("Attiva");
//Comandi Disattivazione Server
}
}
private void cmd_mysqlItemStateChanged(java.awt.event.ItemEvent evt) {
if (evt.getStateChange() == ItemEvent.SELECTED) {
cmd_mysql.setText("Disattiva");
//Comandi Attivazione Server
} else {
cmd_mysql.setText("Attiva");
//Comandi Disattivazione Server
}
}
private void file_configActionPerformed(java.awt.event.ActionEvent evt) {
this.setEnabled(false);
guiconfig.main();
}
private void file_closeActionPerformed(java.awt.event.ActionEvent evt) {
System.exit(0);
}
private void cmdEraseMouseClicked(java.awt.event.MouseEvent evt) {
Console.setText("");
}
private void formWindowClosing(java.awt.event.WindowEvent evt) {
Servers.database.disconnect();
}
public static void main() {
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Windows".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(gui.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
(new gui()).setVisible(true);
}
});
}
// Variables declaration - do not modify
javax.swing.JTextArea Console;
javax.swing.JLabel address_mysql;
javax.swing.JMenu clients_delete;
javax.swing.JMenu clients_edit;
javax.swing.JMenuItem clients_manager;
javax.swing.JMenuItem clients_new;
javax.swing.JLabel cmdErase;
javax.swing.JToggleButton cmd_clients;
javax.swing.JToggleButton cmd_modules;
javax.swing.JToggleButton cmd_mysql;
javax.swing.JToggleButton cmd_operators;
javax.swing.JMenuItem file_close;
javax.swing.JMenuItem file_config;
javax.swing.JTextField input_terminal;
javax.swing.JLabel jLabel1;
javax.swing.JLabel jLabel10;
javax.swing.JLabel jLabel11;
javax.swing.JLabel jLabel13;
javax.swing.JLabel jLabel15;
javax.swing.JLabel jLabel17;
javax.swing.JLabel jLabel19;
javax.swing.JLabel jLabel2;
javax.swing.JLabel jLabel21;
javax.swing.JLabel jLabel3;
javax.swing.JLabel jLabel4;
javax.swing.JLabel jLabel7;
javax.swing.JLabel jLabel8;
javax.swing.JMenu jMenu1;
javax.swing.JMenu jMenu2;
javax.swing.JMenu jMenu3;
javax.swing.JMenu jMenu4;
javax.swing.JMenuBar jMenuBar1;
javax.swing.JPanel jPanel1;
javax.swing.JScrollPane jScrollPane1;
javax.swing.JPopupMenu.Separator jSeparator1;
javax.swing.JPopupMenu.Separator jSeparator2;
javax.swing.JPopupMenu.Separator jSeparator3;
javax.swing.JPopupMenu.Separator jSeparator4;
javax.swing.JMenu modules_delete;
javax.swing.JMenu modules_edit;
javax.swing.JMenuItem modules_manager;
javax.swing.JMenuItem modules_new;
javax.swing.JLabel number_clients;
javax.swing.JLabel number_modules;
javax.swing.JLabel number_operators;
javax.swing.JMenu operators_delete;
javax.swing.JMenu operators_edit;
javax.swing.JMenuItem operators_manager;
javax.swing.JMenuItem operators_new;
javax.swing.JLabel port_clients;
javax.swing.JLabel port_modules;
javax.swing.JLabel port_mysql;
javax.swing.JLabel port_operators;
// End of variables declaration
}
l'errore, come ho già detto, non si localizza nel codice in questione, ma, nell'eventuale codice che richiama una qualunque funzione pubblica della classe (con passaggio di parametri). Esempio:
Classe: gui.java
public void wConsole(String Text) {
Console.append(Text);
}
Richiamo da classe esterna:
Gui.gui.wConsole("Prova");
Genera Errore sulla chiamata: non-static method wConsole(java.lang.String) cannot be referenced from a static context
grazie ancora
franksisca
04-01-2012, 10:52
non ho letto tutto il codice, ma solo l'ultima riga, e l'errore ti dice "giustamente" che non puoi usare in modo statico quel metodo, in quanto dinamico.
prova a creare un oggetto Gui e poi ad utilizzarlo
non ho letto tutto il codice, ma solo l'ultima riga, e l'errore ti dice "giustamente" che non puoi usare in modo statico quel metodo, in quanto dinamico.
Giusto, alla fine è impossibile accedere alle risorse create nel thread...
C'è un modo per "pubblicare" l'oggetto prodotto dal thread?
prova a creare un oggetto Gui e poi ad utilizzarlo
Ecco qui mi perdo... in che senso creare oggetto gui?
Grazie ancora
franksisca
04-01-2012, 14:54
Gui nomeGui= new Gui();
nomeGui.wConsole("Prova");
Gui nomeGui= new Gui();
nomeGui.wConsole("Prova");
Ho provato, non da errori. ma non funziona sulla console disegnata.
Se ho capito bene il funzionamento, ho creato una nuova istanza della classe ed ho eseguito una funzione nell'istanza.
Se è così, allora non va bene, perchè ho bisogno che me la esegua nel thread creato per il mani, dove è stato già creato il form.
franksisca
04-01-2012, 16:00
Ho provato, non da errori. ma non funziona sulla console disegnata.
Se ho capito bene il funzionamento, ho creato una nuova istanza della classe ed ho eseguito una funzione nell'istanza.
Se è così, allora non va bene, perchè ho bisogno che me la esegua nel thread creato per il mani, dove è stato già creato il form.
si, il funzionamento è quello, ovvero il classico funzionamento ad oggetti.
io non ho capito invece cosa serve a te...perdonami ma sto sbattendo tra itext e altre cose quindi non sono lucidissimo, mi riepiloghi le tue esigenze e la tua attuale soluzione?
Allora, riepilogo in poche parole, sperando di essere abbastanza chiaro:
La gui, viene creata con una nuova istanza, nella gui creata, c'è una JTextArea chiamata Console.
Il mio problema è questo: devo accedere dall'esterno (da un'altra classe) a quasta textarea e modificarne il contenuto, solo che mi è impossibile perchè al momento della modifica questa si trova in una istanza. In sostanza, devo trovare un modo per accedere alla risorsa del thread e modificarla.
Spero di aver fatto chiarezza.
Grazie Mille
franksisca
05-01-2012, 09:36
Allora, riepilogo in poche parole, sperando di essere abbastanza chiaro:
La gui, viene creata con una nuova istanza, nella gui creata, c'è una JTextArea chiamata Console.
Il mio problema è questo: devo accedere dall'esterno (da un'altra classe) a quasta textarea e modificarne il contenuto, solo che mi è impossibile perchè al momento della modifica questa si trova in una istanza. In sostanza, devo trovare un modo per accedere alla risorsa del thread e modificarla.
Spero di aver fatto chiarezza.
Grazie Mille
scusa ma utilizzare un semplice metodo accessorio?
scusa ma utilizzare un semplice metodo accessorio?
Ho guardato le reflection come mi hai detto, però non ho ben capito come usarle..
potresti, in un attimo di tempo, buttarmi giù un esempio?
Grazie
franksisca
05-01-2012, 17:13
Non c'è bisogno di andare a scomodare le reflection ;)
crei un metodo che restituisca, una volta invocato, il contenuto della textarea
public String getTestoJTextArea(){
return this.jtextare.getText();
}
e poi nel thread non fai altro che richiamare questo metodo tramite gui.getTestoJTextArea().
attento però che con questo approccio rischi di trovarti in seri problemi con la concorrenza e la consistenza dei dati.
fai una prova.
Si, questo sarebbe possibile se fossero nello stesso thread... solo che la mia applicazione funziona così:
inizio -------Thread Gui----------
------------| Fine
-------Thread Server-------
In poche parole i due thread sono separati e non si incotrano mai...
io sto cercando dal Thread Server di accedere ad una risorsa del Thread Gui
Grazie
Credo che l'unico modo sia utilizzare le reflection... solo che non riesco a capire come funzionano...
Certo che mi sembra incredibile che netbeans produca una cosa che è utilizzabile soltanto dal suo thread...
franksisca
09-01-2012, 08:38
Credo che l'unico modo sia utilizzare le reflection... solo che non riesco a capire come funzionano...
Certo che mi sembra incredibile che netbeans produca una cosa che è utilizzabile soltanto dal suo thread...
ma infatti non è così, sto lavorando proprio in questo periodo ad un progetto con netbeans, e sto manipolando i dati dell'interfaccia grafica dall'esterno con classi "normali", senza alcun problema di sorta, forse però il mio caso è diverso dal tuo...
mi puoi fare un'esempio di come modifichi i dati?
grazie mille
Genymus
franksisca
10-01-2012, 08:40
dammi una mail che ti mando qualche progettino che ho fatto...che facciamo prima!!!
franksisca ti ho inviato un messaggio privato... comunque quando risolverò scriverò la soluzione in questo 3d.
Grazie ancora
franksisca
10-01-2012, 17:47
mandato mail con un allegato di 3 mega
il codice è un po sporco e rozzo perchè è un progetto che sto sviluppando in questo preciso momento, quindi non ho "il tempo" di cercarti qualcosa di più pulito e magari più adatto, ma questo dovrebbe farti vedere come "usualmente" mi passo i parametri tra le varie classi.
P.S.: non uso MVC, ma se ti serve anche quello posso procurartelo in qualche modo :D
Grazie per l'aiuto...
finalmente ho risolto, anche se in realtà sono sceso a compromessi.
La soluzione corrisponde a questo (attenzione: richiede un minimo di esperienza per poter capire il codice):
(Posto il codice in modo Generale, le parole tra i # è il nome dell'oggetto a cui si riferiscono)
public static #classe# #nome_variabile#;
#nome_variabile# = new #classe#; //Con questo avvio l'istanza della classe;
in questo modo, sono disponibili tutte le classi "public" interne alla classe #classe#.
Di conseguenza è possibile modificare i vari oggetti.
Un esempio di questo codice è questo:
Classe "load":
public class load {
public static Gui.gui guiFrame;
public static void main(String[] args) {
guiFrame = new Gui.gui();
guiFrame.setVisible(true);
guiFrame.wConsole("prova");
}
}
}
Classe "gui" (package: "Gui"):
package Gui;
import java.awt.event.*;
import java.awt.*;
public final class gui extends javax.swing.JFrame {
public void wConsole(String Text) {
Console.append(Text);
}
public gui() {
........
Spero possa essere di aiuto a qualcuno che ne avvesse bisogno.
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.