Posso avere un campo di testo all’interno di un’etichetta?

Quello che mi piacerebbe fare è visualizzare quanto segue in una forma:

Open [15] minutes before class 

Dove [15] è un campo di testo. È ansible?

Utilizzare un “componente composito” aggiungendo le parti richieste a un JPanel . PER ESEMPIO

TimeBeforeClass

 import java.awt.FlowLayout; import javax.swing.*; class TimeBeforeClass { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { JPanel gui = new JPanel(new FlowLayout(FlowLayout.LEFT, 3,3)); gui.add(new JLabel("Open")); gui.add(new JSpinner(new SpinnerNumberModel(15,0,20,1))); gui.add(new JLabel("minutes before class")); JOptionPane.showMessageDialog(null, gui); } }); } } 

Nota che ho scambiato il “campo di testo” per un JSpinner – un componente più adatto per selezionare “tempo in minuti”.

 Can I have a textfield inside a label? 
  • la risposta è sì, è ansible, questa è una proprietà di base di Java AWT / Swing Objects

  • JComboBox , JTable , JList , JSpinner , JFile(Color)Chooser …. sono composti JComponents , puoi estrarre tutto JComponent e rimetterlo insieme.

  • puoi mettere uno qualsiasi dei JComponents all’altro

  • solo JFrame/JDialog/JWindow e JPanel hanno implementato LayoutManager di default nell’API, per il resto di allora devi implementare correttamente il LayoutManager

Penso di non aver capito. Ma ci proverò:

Puoi ottenere il testo da un campo di testo:

label.setText (“Apri” + textField.getText () + “minuti prima della lezione”);