NON RIESCO A CAPIRE L'ERRORE SU add (ULTIMA RIGA DEL CODICE, UTILE)

di alberto il
23 risposte
Import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import java.sql.Date;
import java.text.DateFormat;
import java.util.Locale;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JTabbedPane;

public class A1 extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
A1 frame = new A1();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame
* .
*/
public A1() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(140, 96, 114, 25);
contentPane.add(btnNewButton);

JFormattedTextField formattedTextField = new JFormattedTextField();
formattedTextField.setBounds(88, 44, 148, 25);
contentPane.add(formattedTextField);


JTabbedPane data = new JTabbedPane(JTabbedPane.TOP);
data.setBounds(140, 188, 105, 36);
long eventMask;
Date data1 = new Date(eventMask);
DateFormat formatoData = DateFormat.getDateInstance(DateFormat.LONG, Locale.ITALY);
String s = formatoData.format(data1);
contentPane.add(data1);
// void add(Component);
// contentPane.add(data1.setDate(Calendar));
}
}

23 Risposte

  • Mi dice "the method add(Component) in the type Container is not applicable for the arguments (Date)
  • alberto ha scritto:


    Mi dice "the method add(Component) in the type Container is not applicable for the arguments (Date)
    Beh, visto così mi pare (abbastanza) ovvio:

    Date data1 = new Date(eventMask);
    [...]
    contentPane.add(data1);

    data1 non è un "componente" AWT/Swing ... è un oggetto java.sql.Date e quindi non lo puoi certo inserire in una interfaccia grafica!
  • JTabbedPane data = new JTabbedPane(JTabbedPane.TOP);
    data.setBounds(140, 188, 105, 36);
    long eventMask;
    Date data1 = new Date(eventMask);
    DateFormat formatoData = DateFormat.getDateInstance(DateFormat.LONG, Locale.ITALY);
    String s = formatoData.format(data1);
    contentPane.add(data1);
  • alberto ha scritto:


    Date data1 = new Date(eventMask);
    DateFormat formatoData = DateFormat.getDateInstance(DateFormat.LONG, Locale.ITALY);
    String s = formatoData.format(data1);
    contentPane.add(data1);
    Ripeto ancora che un Date non lo puoi mettere in un layout grafico, perché non è un componente grafico.
    Ora .. se devi solo visualizzare una data, potrebbe bastare un JLabel: formatti la data con DateFormat e la stringa la metti in JLabel.
    Discorso ben DIVERSO se la data deve essere editabile dall'utente. In tal caso ci sono diverse opzioni a seconda di quanto vuoi che sia "controllato" (diciamo limitato/agevolato) l'input dell'utente. E la libreria JCalendar è una possibilità.
  • Esatto, devo farlo editare e controllare. ma non riesco ad installare JCalendar. come si è visto sono nuovo di java, provengo dal Cobol e stò incontrando molte difficoltà, soprattutto nelle istallazioni
  • alberto ha scritto:


    Esatto, devo farlo editare e controllare. ma non riesco ad installare JCalendar. come si è visto sono nuovo di java, provengo dal Cobol e stò incontrando molte difficoltà, soprattutto nelle istallazioni
    JCalendar, se ben ricordo (mai più usata/vista da tempo, non so se è ancora in sviluppo ...), è alla fin fine un singolo jar da aggiungere "in classpath".
    Ma come/dove farlo dipende molto da come è impostato/buildato il progetto. Stai compilando/eseguendo "a mano" con i tools del JDK? O da un IDE? Se IDE, quale? Che tipo di progetto usa? Uno nativo del IDE o basato su es. Maven?
  • Uso eclipse, jdk 13
  • Allrora, come posso fare a far digitare all'utente una data formattata?
  • alberto ha scritto:


    Uso eclipse, jdk 13

    alberto ha scritto:


    Allrora, come posso fare a far digitare all'utente una data formattata?
    Se in Eclipse hai fatto un normale "Java Project" specifico di Eclipse (non progetto Maven o altro insomma), allora:
    - fai una cartella es. libs nella "home" del progetto (allo stesso livello di src, per intenderci)
    - metti nella libs il jcalendar-X.Y.jar che trovi dentro lo zip (cartella interna lib) che scarichi al fondo qui: https://toedter.com/jcalendar
    - Proprietà del progetto -> Java Build Path, scheda "Libraries", poi pulsante "Add JARs..." (è il primo a destra se non hanno cambiato in Eclipse recenti) e vai a pescare il jar dalla libs. Questo configura nel progetto un path "relativo", quindi il progetto è "portabile" in un Eclipse su un'altra macchina.

    Poi usi le sue classi, che ovviamente devi studiare.
    Per far "girare" l'app FUORI dal IDE, poi serve un minimo di attenzione su come gestire il classpath.
  • Infatti! ho fatto Java Build Patch, ma non mi si apre il pulsante ADD JARs. e non capisco il motivo
  • ....non puoi mandarmi uno spezzone di codice dove mi posso confrontare per l'inserimento della data con l'IDE?
  • alberto ha scritto:


    Infatti! ho fatto Java Build Patch, ma non mi si apre il pulsante ADD JARs. e non capisco il motivo
    Mi pare proprio strano .... davvero non è cliccabile??
  • Si !!! e non capisco il motivo
  • Ora dopo vari tentativi sono riuscito ad aggingere jcalendar nel classpatch, ma qiando do apply non inserisce nulla
Devi accedere o registrarti per scrivere nel forum
23 risposte