Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Piccolo progresso: nel codice di esecuzione delle operazioni ho aggiunto un setLocation(); all'output:
Con quelle coordinate pongo la JTextArea nel punto dove cade di default, se cambio i valori, esso scende, ma resta in secondo piano, cioè dentro il JFrame, non nel JScrollPane.codice:this.add(OutputArea).setLocation(0,0); OutputArea.append("..." + "\n");
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Il problema è che la JTextArea (o forse il contenitore JScrollPane?), in fase di output, se ne va nel livello del JFrame.
Ho immaginato che andasse imposta la posizione, visto che sennò la piazza a X=0, Y=0. Se non occorre impostare una posizione, perché in fase di output si sposta nell'origine?
---
Sono riuscito a fare apparire i risultati!
Però ho problemi chiedendo risultati con più righe, oppure cancellando con l'apposito Button.codice:this.add(jScrollPane1); OutputArea.append("..." + "\n");
Ultima modifica di Gas75; 07-02-2017 a 18:28
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
No.
Succede che la JTextArea appare un po' più sopra della posizione iniziale, finché ci sono poche righe, altrimenti visualizza soltanto le prime 8 e non scrolla le altre. Inoltre pare instabile graficamente: tutta la parte di input, dopo l'output, scende in basso e in base a come passo il mouse, vedo gli oggetti swing oppure la JTextArea... Eppure gli oggetti sono definiti nel loro rigido Layout.
Ultima modifica di Gas75; 07-02-2017 a 20:27
Questa è la situazione quando stampo l'output, e cosa succede dopo qualche secondo, se clicco Cancella o un punto qualsiasi dell'interfaccia.
Clipboard01.jpg
Clipboard02.jpg
Gas75 .... ne so esattamente quanto prima, non potendo vedere il codice!
Vedendo i due ultimi screenshot però mi viene un dubbio. Quelle cose (Clipboard01.jpg in modo specifico) capitano solitamente quando più componenti nello stesso contenitore (quindi sono per così dire "fratelli", strutturalmente) hanno posizioni/dimensioni tali per cui alcuni di questi componenti si sovrappongono e quindi entra in gioco lo z-order (che in Swing è sempre un po' critico).
Quindi, prima dicevi di aver fatto
this.add(jScrollPane1);
e questo È corretto se quel this è riferito ad un pannello che è contenuto nella scheda "Calcolo radici".
Non è che .... da qualche parte c'è anche un
this.add(tuaTextArea);
?? Quest'ultimo è sbagliato! Il JTextArea va solo settato come component "view" in JScrollPane. NON va aggiunto esplicitamente con add in un contenitore.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Di this.add ce ne stanno due, e ho argomentato entrambi con il Jscrollpane, seguito dall'append sulla TextArea.Sono due perché c'è un else da gestire, con output sempre nella TextArea...
Con il layout introdotto non ci sono oggetti nella stessa cella, e confermo che tentando di farli coesistere, sballano di posizione.
JScrollPane ha queste istruzioni:
La TextArea ha queste altre:codice:jScrollPane1 = new javax.swing.JScrollPane(); jScrollPane1.setAutoscrolls(true); jScrollPane1.setFont(new java.awt.Font("Monospaced", 0, 12)); // NOI18N jScrollPane1.setMaximumSize(new java.awt.Dimension(146, 91)); jScrollPane1.setMinimumSize(new java.awt.Dimension(146, 91)); jScrollPane1.setOpaque(false); jScrollPane1.setPreferredSize(new java.awt.Dimension(146, 91)); // Code of sub-components and layout - not shown here gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridy = 3; gridBagConstraints.gridwidth = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(18, 20, 18, 20); jPanel1.add(jScrollPane1, gridBagConstraints);
Da novizio mi viene qualche sospetto circa il rapporto tra dimensioni e righe/colonne...codice:OutputArea = new javax.swing.JTextArea(); OutputArea.setEditable(false); OutputArea.setColumns(20); OutputArea.setFont(new java.awt.Font("Monospaced", 0, 12)); // NOI18N OutputArea.setRows(8); OutputArea.setTabSize(8); OutputArea.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR)); OutputArea.setMaximumSize(new java.awt.Dimension(146, 91)); OutputArea.setMinimumSize(new java.awt.Dimension(146, 91)); OutputArea.setPreferredSize(new java.awt.Dimension(146, 91)); jScrollPane1.setViewportView(OutputArea);
Ma resta strano il fatto che cliccando ovunque dentro il JFrame, lo scrollpane come se collassa e finisce poi in secondo piano...
Posso passare il numero di righe che deve avere la TextArea prendendolo dal contenuto di input di uno dei TextField?