ciao a tutti ragazzi
allora ho un problema con un piccolo programma JAVA che sto scrivendo per far pratica con le GUI Swing.
questa è la mia classe, che istanzio nel main (non posto qui perchè non faccio altre che creare un nuovo oggetto GestoreFrame).codice:import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GestoreFrame extends JFrame { //creazione entità grafiche: JMenuBar menu = new JMenuBar(); JMenu m1 = new JMenu ("primo"); JMenu m2 = new JMenu ("secondo"); JMenuItem i1 = new JMenuItem ("oggetto 1"); JMenuItem i2 = new JMenuItem ("oggetto 2"); JPanel pannello = new JPanel(); JLabel p1 = new JLabel(); JLabel p2 = new JLabel(); JButton bottone1 = new JButton("bottone"); public GestoreFrame() { //creazione frame super(); this.setSize(800,600); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); //creazione menu this.setJMenuBar(menu); menu.add(m1); menu.add(m2); m1.add(i1); m2.add(i2); //creazione pannello pannello.setLayout(new FlowLayout()); pannello.setBackground(java.awt.Color.GREEN); this.add(pannello); //personalizzazione label p1.setText("prima label"); p2.setText("seconda label"); //associazione degli eventi Ascoltatore a = new Ascoltatore(); i1.addActionListener(a); i2.addActionListener(a); } public class Ascoltatore implements ActionListener { public void actionPerformed(ActionEvent e) { Object sorgente = e.getSource(); if (sorgente==i1) { pannello.add(bottone1); } else if (sorgente==i2) { pannello.add(p2); } } } }
Il frame ha un piccolo menu a tendina in alto, e ho associato alle voci di questo menu delle azioni. vorrei che al click di una delle voci mi apparisse un pulsante sul JPanel.
il problema è questo: cliccando sulla voce, non appare niente, ma appena ridimensiono anche di un px il Frame (con il mouse, in windows, non da programma!) allora compare il pulsante, e così via per ogni cambiamento che apporto al Frame all'interno del metono actionPerformed.
sicuramente mi sfugge qualcosa.
dove sbaglio?
vi ringrazio in anticipo![]()

Rispondi quotando
