Ecco il codice incriminato:
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class TestFinestra {
	public static void main(String[] args){
		
		
		JFrame frame = new JFrame("Hello Swing"); 
	 	frame.setVisible(true);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
		frame.setSize(300, 300);
		JPanel panel = new JPanel();
		frame.add(panel);
		JButton button = new JButton("Click here");
		button.setSize(400,100);
		panel.add(button);
		button.addActionListener(new Action());
}			
		static class Action implements ActionListener{
				
			public void actionPerformed (ActionEvent e) {
				JFrame frame2 = new JFrame("clicked");
				frame2.setVisible(true);
				frame2.setSize(300,300);
				JLabel label = new JLabel ("You clicked me");
				JPanel panel = new JPanel();
				frame2.add(panel);
				panel.add(label);
			}
		}
			
	}
Il problema e' che quando lo lancio il bottone a volte prende le dimensioni che gli ho passato button.setSize(400,100); a volte invece auto imposta la grandezza al minimo indispensabile per contenere il testo del bottone.

Se rimuovo il comando (setSize(), invece, le volte che non lo dimensiona da solo alla grandezza minima indispensabile non appare proprio il bottone!

Ha un qualche senso tutto cio'?