Ciao a tutti.
La mia domanda forse è stupida, forse no; giudicate voi se è corretto o meno quello che ho fatto.
Praticamente ho creato delle sottoclassi di JFrame, JButton, JLabel e JPanel. Il problema è che così facendo le variabili di esemplare non vengono istanziate correttamente: width e height dei componenti valgono 0, e non so cos'altro manca...
Queste sono le classi che ho creato:
Classe Frame
Classe Buttoncodice:import javax.swing.JFrame; public class Frame extends JFrame { private static final int FRAME_WIDTH = 300; private static final int FRAME_HEIGHT = 400; private static final int FRAME_X_POS = 200; private static final int FRAME_Y_POS = 200; public Frame() { setTitle("Un Frame."); setBounds(FRAME_X_POS,FRAME_Y_POS,FRAME_WIDTH,FRAME_HEIGHT); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } }
Classe Labelcodice:import javax.swing.JButton; import java.awt.event.MouseListener; import java.awt.event.MouseEvent; public class Button extends JButton { private JButton button; class MouseOverListener implements MouseListener { public void mousePressed(MouseEvent event){} public void mouseReleased(MouseEvent event) { System.out.println("Button: sono stato cliccato."); } public void mouseClicked(MouseEvent event){} public void mouseEntered(MouseEvent event){} public void mouseExited(MouseEvent event){} } public Button(String text) { button = new JButton(text); MouseListener listener = new MouseOverListener(); addMouseListener(listener); } }
Classe Panelcodice:import javax.swing.JLabel; public class Label extends JLabel { private JLabel label; public Label(String text) { label = new JLabel(text); } }
Classe Maincodice:import javax.swing.JPanel; public class Panel extends JPanel { private JPanel panel; public Panel() { panel = new JPanel(); setSize(200,200); //senza questo non riesco a cliccare button } }
L'output è questocodice:public class Main { public static void main(String[] args) { Frame frame = new Frame(); Button button = new Button("Button"); Label label = new Label("This is a label."); Panel panel = new Panel(); panel.add(button); panel.add(label); frame.add(panel); } }
La domanda è: perché i componenti non vengono visualizzati? Forse ho sovrascritto qualche metodo delle superclassi senza volerlo e quindi sballa tutto?
Ringrazio in anticipo chiunque abbia la pazienza e la voglia di rispondermi!
EDIT: ho appena scoperto che se invoco i costruttori delle superclassi con super() funziona tutto alla perfezioneperò vorrei sapere da voi esperti se quest'approccio è corretto o se è meglio evitarlo... grazie!


però vorrei sapere da voi esperti se quest'approccio è corretto o se è meglio evitarlo... grazie!
Rispondi quotando
