|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
[JAVA]esercizio
RAgazzi qualcuno mi dà qualche dritta/suggerimento per fare questo esercizio??:
Progettate una applicazione per disegnare semplici forme geometriche su un pannello. L’applicazione apre una finestra con due pulsanti ed un pannello per il disegno. I due pulsanti sono allineati sul fondo della finestra, mentre il pannello occupa tutta la parte superiore. Le etichette dei due pulsanti raffigurano un rettangolo ed un cerchio, rispettivamente. Il pannello reagisce ai click del mouse disegnando una figura nella posizione sulla quale avviene il click. I due pulsanti controllano il disegno, nel senso seguente: • il pannello disegna la figura corrispondente al pulsante che è stato clicked per ultimo. • se l’utente non ha ancora selezionato alcun pulsante, un click sul pannello causa la comparsa di un MessageDialog con un messaggio che chiede di selezionare una figura thanks
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2006
Messaggi: 22462
|
__________________
amd a64x2 4400+ sk939;asus a8n-sli; 2x1gb ddr400; x850 crossfire; 2 x western digital abys 320gb|| asus g1
Se striscia fulmina, se svolazza l'ammazza |
|
|
|
|
|
#3 | ||
|
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Quote:
Visto che parli di rettangoli e cerchi, figure semplici cioè, allora puoi usare una collezione di java.awt.Shape ed usare le classi Rectangle2D.Float e Ellipse2D.Float. Essendo degli Shape, puoi facilmente disegnarli su un Graphics2D. Quote:
Sarebbe una soluzione ottimale, nel tuo caso.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
||
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
Codice:
package esercitazione3;
/**
*
*
*/
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Main {
public static void main(String[] args) {
final RectangleComponent component = new RectangleComponent();
// Registra il listener
class MousePressListener implements MouseListener
{
public void mousePressed(MouseEvent event) {
int x = event.getX();
int y = event.getY();
component.moveTo(x, y);
}
// Do-nothing methods
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
MouseListener listener = new MousePressListener();
component.addMouseListener(listener);
JButton button = new JButton ("premi qui");
final JLabel label = new JLabel("bravo");
JPanel panel = new JPanel();
panel.add(button);
// panel.add(label);
JFrame frame = new JFrame();
frame.add(component);
frame.add(panel);
frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
frame.setTitle("Esercitazione 3");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private static final int FRAME_WIDTH = 300;
private static final int FRAME_HEIGHT = 400;
}
cosa cè di sbagliato?? perchè se nonn inserisco il bottone il rettangolo funziona... invece quando metto il bottone visualizzo solo quello?? è giusto come sto facendo?
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Comunque il bottone "button" cosa dovrebbe fare? Non mi sembra sia stato definito un metodo che ne gestisca l'Action... Prova a spiegarci in modo più dettagliato le tue intenzioni. Ciao |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
le mie intenzioni sono di fare l'esecizio del 1 post
il programma come l'ho postato fa apparire un rettangolo che cliccando su un punto qualsiaasi del pannello il rettangolo viene ridisegnato... ora vorrei che in basso ci siano 2 pulsanti se clicco su uno e poi sul pannello viene disegnato un rettangolo se premo l'altro pulsante e poi sul pannello mi disegna un cerchio .. per ora ho fatto che se premo sul pannelo mi disegna un rettangolo ma appena metto un pulsante mi appare solo il pulsante....
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
questo è rectangle component
Codice:
package esercitazione3;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.JComponent;
public class RectangleComponent extends JComponent {
public RectangleComponent()
{
// Il rettangolo disegnato da paintComponent
box = new Rectangle(BOX_X, BOX_Y, BOX_WIDTH, BOX_HEIGHT);
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.draw(box);
}
/**
Sposta il rettangolo alla posizione specificata.
@param x l’asciassa della nuova posizione
@param y l’ordinata della nuova posizione
*/
public void moveTo(int x, int y)
{
box.setLocation(x, y);
repaint();
}
private Rectangle box;
private static final int BOX_X = 100;
private static final int BOX_Y = 100;
private static final int BOX_WIDTH = 20;
private static final int BOX_HEIGHT = 30;
}
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
up con urgenza
questo è il codice Codice:
package javaapplication9;
import javax.swing.*;
import java.awt.*;
import java.awt.Color.*;
import java.awt.event.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseEvent.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Color.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.*;
public class Main extends JFrame
{
class NorthPanel extends JPanel
{
private JTextField textField;
public NorthPanel()
{
textField = new JTextField("Premi il pulsante relativo per disegnare la figura");
textField.setEditable(false);
setLayout(new GridLayout(1,0));
setBorder(BorderFactory.createEmptyBorder(10,4,10,4));
add(textField);
}
}
class CenterPanel extends JPanel
{
public CenterPanel()
{
setLayout(new BorderLayout());
setBorder(BorderFactory.createEmptyBorder(200,200,200,200));
setBackground(Color.WHITE);
Rectangle box = new Rectangle();
MousePressListener l = new MousePressListener();
Panel p = new Panel();
p.addMouseListener(l);
}
}
class SouthPanel extends JPanel
{
private JButton okButton;
private JButton cancelButton;
public SouthPanel()
{
okButton = new JButton("[]");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
}
catch (Exception ex)
{ }
}
});
cancelButton = new JButton("O");
setLayout(new FlowLayout(FlowLayout.CENTER));
add(cancelButton);
add(okButton);
}
}
private JPanel northPanel;
private JPanel centerPanel;
private JPanel southPanel;
public Main()
{
super("Esercitazione3");
JPanel northPanel = new NorthPanel();
JPanel centerPanel = new CenterPanel();
JPanel southPanel = new SouthPanel();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(BorderLayout.NORTH,northPanel);
getContentPane().add(BorderLayout.CENTER,centerPanel);
getContentPane().add(BorderLayout.SOUTH,southPanel);
pack();
setVisible(true);
}
public static void main(String argv[])
{
// imposta il Look&Feel di sistema
try
{
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {}
Main se = new Main();
}
final RectangleComponent component = new RectangleComponent();
private static final int BOX_X = 100;
private static final int BOX_Y = 100;
private static final int BOX_WIDTH = 20;
private static final int BOX_HEIGHT = 30;
class MousePressListener implements MouseListener{
public void mousePressed(MouseEvent event)
{
JOptionPane.showMessageDialog(null, "Operazione Eseguita", "Eseguito", JOptionPane.INFORMATION_MESSAGE);
/*int x = event.getX();
int y = event.getY();
component.moveTo(x, y);*/
}
// Do-nothing methods
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
}
la classe rectanglecomponent è la stassa di sopra... grazie
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 1218
|
ragazzi cosa sbaglio in questo codice???
Codice:
package javaapplication9;
import javax.swing.*;
import java.awt.*;
import java.awt.Color.*;
import java.awt.event.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseEvent.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.*;
import java.awt.*;
import javax.swing.*;
import java.awt.*;
import java.awt.Color.*;
import java.awt.event.*;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import javax.swing.*;
public class Main extends JFrame
{
class NorthPanel extends JPanel
{
private JTextField textField;
public NorthPanel()
{
textField = new JTextField("Premi il pulsante relativo per disegnare la figura");
textField.setEditable(false);
setLayout(new GridLayout(1,0));
setBorder(BorderFactory.createEmptyBorder(10,4,10,4));
add(textField);
}
}
class CenterPanel extends JPanel
{
public CenterPanel()
{
setLayout(new BorderLayout());
setBorder(BorderFactory.createEmptyBorder(200,200,200,200));
setBackground(Color.WHITE);
MousePressListener l = new MousePressListener();
component.addMouseListener(l);
JPanel p=new JPanel();
setContentPane(p);
p.add(component);
p.addMouseListener(l);
p.add(component);
}
}
class SouthPanel extends JPanel
{
private JButton okButton;
private JButton cancelButton;
public SouthPanel()
{
okButton = new JButton("[]");
okButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try
{
}
catch (Exception ex)
{ }
}
});
cancelButton = new JButton("O");
setLayout(new FlowLayout(FlowLayout.CENTER));
add(cancelButton);
add(okButton);
}
}
private JPanel northPanel;
private JPanel centerPanel;
private JPanel southPanel;
public Main()
{
super("Esercitazione3");
JPanel northPanel = new NorthPanel();
JPanel centerPanel = new CenterPanel();
JPanel southPanel = new SouthPanel();
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(BorderLayout.NORTH,northPanel);
getContentPane().add(BorderLayout.CENTER,centerPanel);
getContentPane().add(BorderLayout.SOUTH,southPanel);
pack();
setVisible(true);
}
public static void main(String argv[])
{
final RectangleComponent component = new RectangleComponent();
// imposta il Look&Feel di sistema
try
{
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {}
Main se = new Main();
}
final RectangleComponent component = new RectangleComponent();
private static final int disegno = 1;
class MousePressListener implements MouseListener{
public void mousePressed(MouseEvent event)
{
if (disegno == 0)
JOptionPane.showMessageDialog(null, "Devi premere il pulsante con la figura da disegnare", "Errore", JOptionPane.INFORMATION_MESSAGE);
//if (disegno == 1){
int x = event.getX();
int y = event.getY();
component.moveTo(x, y);
// }
}
// Do-nothing methods
public void mouseReleased(MouseEvent event) {}
public void mouseClicked(MouseEvent event) {}
public void mouseEntered(MouseEvent event) {}
public void mouseExited(MouseEvent event) {}
}
}
perchè non mi visualizza il rettangolo ???
__________________
Athlon64 3500 (Winchester), Asus A8V-E Deluxe, X700Pro 256MB, Maxtor 200GB Sata,Ali Enermax 400W, Mast. Pionner 109,Lettore dvd LG, Creative 2.1 3200, LG 1980q, Canon Pixma mp500. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 19:08.




















