Ciao a tutti, da tempo sto cercando di creare un'applicazione che modifica un rettangolo usando un interfaccia utente.
Questa è la prima vera applicazione che tento di creare da solo e il risultato non è stato quello previsto: dal punto di vista grafico tutto è perfetto ma usando checkbox e altri bottoni non succede niente.
![]()
Come posso farlo funzionare?
Questo è il codice
Grazie in anticipo a tutticodice://tutti gli import class Frame extends JFrame { public Frame() { setSize(500, 500); setTitle("framequattro :-)"); addWindowListener(new Chiusore()); //ometto la creazione di un menù Container cont_generale = getContentPane(); //creo pannello per il rettangolo pannelloRettangolo = new PannelloRettangoli(); cont_generale.add(pannelloRettangolo, "Center"); controlli = new JPanel(); //metodi x creare il bordo controlli.setBorder(new TitledBorder(new EtchedBorder(), "Preferenze")); cont_generale.add(controlli, "South"); //menù a tendina tendina = new JComboBox(); tendina.addItem("Nero"); tendina.addItem("Rosso"); tendina.addItem("Blu"); controlli.add(tendina); //checkbox riempito = new JCheckBox("Riempi"); controlli.add(riempito); //radio button uno = new JRadioButton("20x30"); due = new JRadioButton("30x40"); tre = new JRadioButton("40x50"); ButtonGroup radio = new ButtonGroup(); radio.add(uno); radio.add(due); radio.add(tre); controlli.add(uno); controlli.add(due); controlli.add(tre); uno.setSelected(true); //intercettatori Ascoltatore spia = new Ascoltatore(); esci.addActionListener(spia); su.addActionListener(spia); giu.addActionListener(spia); destra.addActionListener(spia); sinistra.addActionListener(spia); tendina.addActionListener(spia); casuale.addActionListener(spia); uno.addActionListener(spia); due.addActionListener(spia); tre.addActionListener(spia); riempito.addActionListener(spia); } private class Ascoltatore implements ActionListener { public void actionPerformed(ActionEvent event) { //cosa abbiamo cliccato? Object sorgente = event.getSource(); if(sorgente == tendina) pannelloRettangolo.cambiaColore(tendina); else if(sorgente == riempito) pannelloRettangolo.riempi(); else if(sorgente == uno) pannelloRettangolo.cambiaDimensioni(20, 30); else if(sorgente == due) pannelloRettangolo.cambiaDimensioni(30, 40); else if(sorgente == tre) pannelloRettangolo.cambiaDimensioni(40, 50); } } private class Chiusore extends WindowAdapter { public void windowClosing(WindowEvent event) { System.exit(0); } } private JPanel controlli; private JComboBox tendina; private JCheckBox riempito; private JRadioButton uno; private JRadioButton due; private JRadioButton tre; public PannelloRettangoli pannelloRettangolo; } class PannelloRettangoli extends JPanel { public PannelloRettangoli() { larghezza = 20; altezza = 30; rettangolo = new Rectangle(0, 0, larghezza, altezza); setBackground(Color.yellow); } public void paintComponent(Graphics g) { super.paintComponent(g); g2 = (Graphics2D)g; g2.draw(rettangolo); } public void cambiaColore() { String selezionato = (String)tendina.getSelectedItem(); if(selezionato == "Nero") colore = new Color(0.0F, 0.0F, 0.0F); else if(selezionato == "Blu") colore = new Color(0.0F, 0.0F, 1.0F); else if(selezionato == "Rosso") colore = new Color(1.0F, 0.0F, 0.0F); g2.setColor(colore); repaint(); } public void riempi() { g2.fill(rettangolo); repaint(); } public void cambiaDimensioni(int x, int y) { altezza = y; larghezza = x; repaint(); } public Graphics2D g2; private Rectangle rettangolo; public int larghezza; public int altezza; private Color colore; }

Rispondi quotando
