Ciao a tutti,
spero di esser stato abbastanza chiaro nel titolo (e nel codice XD).
IG= Interfaccia Grafica O.o
Comunque... avrei voluto riuscirci da solo ma ahimè non ce l'ho fatta quindi chiedo a qualcuno che è più esperto di me.
Ho 2 problemi .
Primo: Questo programma disegna cerchi al click del mouse all'interno del frame.
A me invece il disegno compare solo se ingrandisco tutte le volte il frame con il pulsante di ingrandimento![]()
Secondo: Come chiudo il frame nel quale leggo il raggio una volta che ho cliccato sul pulsante OK?![]()
Codice:
codice:package programmazioneGrafica3; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.geom.Ellipse2D; // definisce la classe con la quale è possibile disegnare 1 cerchio import javax.swing.JComponent; public class Cerchio extends JComponent { public Cerchio(double x_init,double y_init,double alt,double lung) { x=x_init; y=y_init; height=alt; width=lung; cerchio=new Ellipse2D.Double(x,y, height, width); // (double x, double y, double w, double h) } public void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; g2.setColor(Color.BLACK); g2.fill(cerchio); g2.draw(cerchio); g2.setColor(Color.WHITE); repaint(); } public double get_X() { return x; } public double get_Y() { return y; } public double getAlt() { return height; } public double getLung() { return width; } private Ellipse2D.Double cerchio; private double x; private double y; private double height; private double width; }
e
Eventuali consigli sull'ottimizzazione del codice sono sempre ben accetti.codice:package programmazioneGrafica3; import java.awt.event.*; import javax.swing.*; public class FrameMain { public static void main(String[] args) { // Inizio creazione frame principale final JFrame frame=new JFrame(); // creo un frame in cui vedrò il cerchio final int FRAME_WIDTH=300; // definisco le dimensioni del frame final int FRAME_HEIGHT=300; // definisco le dimensioni del frame frame.setSize(FRAME_WIDTH, FRAME_HEIGHT); // imposto le dimensioni della finestra frame.setTitle("Titolo"); // imposto il titolo della finestra frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // il parametro EXIT_ON_CLOSE appartiene all'oggetto JFrame e quindi viene invocato su di esso. // Fine creazione frame principale // Inizio creazione frame cattura dati final JFrame richiesta = new JFrame("Inserimento Dati"); // creo un altro frame per la cattura dei dati del raggio richiesta.setBounds(150, 150, 300, 150); // ne setto le dimensioni richiesta.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // imposto che deve chiudersi se premo X JLabel label = new JLabel("Inserisci il raggio: "); // testo che fa capire a cosa serve la finestra final JTextField text = new JTextField(10); // campo testo che cattura il valore JButton button = new JButton("Draw"); // pulsante che fa disegnare quando premuto JPanel panel = new JPanel(); // creo un pannello a cui aggiungerò i vari componenti panel.add(label); panel.add(text); panel.add(button); richiesta.add(panel); // aggiungo al frame il pannello contenente i vari campi richiesta.setVisible(true); // mostro il frame per la richiesta // Fine creazione frame cattura dati class BottonListener implements ActionListener { public void actionPerformed(ActionEvent e) { class MousePressListener implements MouseListener { public void mouseClicked(MouseEvent event) { double raggio=Double.parseDouble(text.getText()); int x = event.getX();// coordinate mouse int y = event.getY();// coordinate mouse Cerchio cerchio=new Cerchio(x-5-(raggio/2),y-30-(raggio/2),raggio,raggio); // -5 e -30 è per i bordi della finestra frame.add(cerchio); } public void mouseReleased (MouseEvent event){} public void mousePressed (MouseEvent event){} public void mouseEntered (MouseEvent event){} public void mouseExited (MouseEvent event){} } MouseListener listener = new MousePressListener(); frame.addMouseListener(listener); } } ActionListener buttonListener = new BottonListener(); // creo l'ascoltatore per il button button.addActionListener(buttonListener); // aggiungo l'ascoltatore al button frame.setVisible(true);// indica se voglio o meno mostrare la finestra in cui ho disegnato il cerchio. } }![]()

Rispondi quotando