Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

HELP!!! save position of the components!!!

843804Nov 23 2004 — edited Apr 9 2009
Hi!
I have a JLayeredPane where I insert some images. I move this images. BUT when I press a button (that invoke a ActionListener) all the images return at initial position!!!

THE PROGRAM:

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
import javax.swing.text.*; //per StyledDocument
import javax.swing.BorderFactory;
import javax.imageio.*;

public class mio implements ActionListener,MouseMotionListener,MouseListener{

JTextArea statusInfo; //info da passare a PROGRAMMA TODO
JTextArea PASpar; // PARAMETRI X TODO
JTextArea PASimage; //IMMAGINI X TODO

Color whitex = new Color(255,255,255);
Color bluex = new Color(100,105,170);
Color bluexx = new Color(100,150,170);
Color redx = new Color(255,0,0);

JFrame frame; //contiene tutto
JFrame frameP;
JMenuBar menu;
JMenu fileMenu;
JMenuItem nuovo;
JMenuItem apriimgf;
JMenuItem aprimosf;
JMenuItem salva;
JMenuItem stampa;
JMenuItem esci;
JMenu modMenu;
JMenuItem annulla;
JMenu helpMenu;
JMenuItem help;

JPanel panel; //contiene oggetti entro menu
JPanel panel2;
JPanel panel3; //xbottoni
JLayeredPane pane;

JTextArea spiega;
JTextArea dico2;

JLayeredPane panelpane; //dove carico img

JButton apriimg;
JButton chiudi;
JButton aprimos;
JButton ok;

JButton mosaica;
JButton superR;

JButton salvab;
JButton migliora;
JButton nuovob;

int _dragFromX = 0; // pressed this far inside ball's
int _dragFromY = 0;
boolean _canDrag = false;
int i;
int px;
int py;

int mousex;
int mousey;

int rifno;//x img d riferimento

int scelta; //1 = immagini 2=mosaico

int Nimg; // NUMERO IMG KE INSERISCO <= 12

JLabel image;
ImageIcon icon;

int ximg, yimg; //posizione img in panel

int xgrid,ygrid; //griglia panel

int[] ximgs,yimgs; //x,y img
JLabel[] images;
int hicon,wicon; //h w img
int[] wimgs,himgs;

int muovi; //img da muovere nell'array


public final static int ONE_SECOND = 500; ////
private JProgressBar progressBar;
private javax.swing.Timer timer;
private JButton startButton;
private LongTask task;
private JTextArea taskOutput;



static private String newline = "\n";


// =================== MAIN

public static void main(String[] args) {
//Schedule a job for the event-dispatching thread:
//creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
mio m = new mio();
}
});
}

/*public static void main(String argv[]){

mio m = new mio();
}*/


// ================ COSTRUTTORE

public mio(){
rifno = 0;//no img d rif
Nimg = 0;
frame = new JFrame("interfaccia");

PASpar = new JTextArea();
PASimage = new JTextArea();

menu = new JMenuBar();
menu.setOpaque(true);
menu.setBackground(bluex);

// ********* Menu file *********
fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
nuovo = new JMenuItem("Nuovo");
nuovo.setMnemonic(KeyEvent.VK_N);
apriimgf = new JMenuItem("Apri immagini");
apriimgf.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_1, ActionEvent.ALT_MASK)); //alt+1
aprimosf = new JMenuItem("Apri mosaico");
salva = new JMenuItem("Salva");
salva.setMnemonic(KeyEvent.VK_S);
esci = new JMenuItem("Esci");
esci.setMnemonic(KeyEvent.VK_E);
//********* Menu Modifica ***********
modMenu = new JMenu("Modifica");
modMenu.setMnemonic(KeyEvent.VK_M);
annulla = new JMenuItem("Annulla");
annulla.setMnemonic(KeyEvent.VK_A);
// ********* Help Menu *************
helpMenu = new JMenu("HELP");
help = new JMenuItem("Help");

menu.add(fileMenu);
fileMenu.add(nuovo);
fileMenu.add(apriimgf);
fileMenu.add(aprimosf);
fileMenu.add(salva);
fileMenu.addSeparator();
fileMenu.addSeparator();
fileMenu.add(esci);
menu.add(modMenu);
modMenu.add(annulla);
menu.add(helpMenu);
helpMenu.add(help);

// ActionListener x ogni voce d menu
nuovo.addActionListener(this);
apriimgf.addActionListener(this);
aprimosf.addActionListener(this);
salva.addActionListener(this);
esci.addActionListener(this);
annulla.addActionListener(this);
help.addActionListener(this);

frame.setJMenuBar(menu);//in frame menu

panel=new JPanel(new BorderLayout(2,2));

frame.getContentPane().add(panel);

spiega = new JTextArea(" 1. Aprire TUTTE le immagini da mosaicare"+ newline +" Oppure il mosaico da migliorare"+newline,3,40);
spiega.setEditable(false);
spiega.setBorder(BorderFactory.createLineBorder(Color.black));//bordo
spiega.setBackground(bluex);

panelpane = new JLayeredPane();
panelpane.setPreferredSize(new Dimension(900,550));
panelpane.setBackground(whitex);
panelpane.setLayout(new GridLayout(0,4)); //max 12 img e occupano tutto subito
panelpane.setBorder(BorderFactory.createLineBorder(Color.black));
panelpane.addMouseListener(this);
panelpane.addMouseMotionListener(this);
xgrid = 225;
ygrid =183;
ximg = 0;
yimg = 0;
images = new JLabel[12];//immagini
ximgs = new int[12];
yimgs = new int[12];
wimgs = new int[12];
himgs = new int[12];


panel3= new JPanel();
panel3.setBackground(bluex);
panel3.setLayout(new BoxLayout(panel3, BoxLayout.Y_AXIS));
panel3.setBorder(BorderFactory.createLineBorder(Color.black));

chiudi = new JButton("Chiudi applicazione");
chiudi.addActionListener(this);
chiudi.setBackground(bluex);

// ******* 1 FRAME
apriimg = new JButton("Apri immagine");
apriimg.addActionListener(this);
apriimg.setBackground(bluex);
aprimos = new JButton("Apri mosaico");
aprimos.addActionListener(this);
aprimos.setBackground(bluex);
ok = new JButton("Prosegui");
ok.addActionListener(this);
ok.setBackground(bluex);
ok.setEnabled(false); //disabilito

//****** 2 frame
mosaica = new JButton(" Mosaica ");
mosaica.addActionListener(this);
mosaica.setBackground(bluex);
mosaica.setVisible(false);
superR = new JButton("Super-Risoluzione");
superR.addActionListener(this);
superR.setBackground(bluex);
superR.setVisible(false);

// ********* 3 frame
salvab = new JButton(" Salva mosaico ");
salvab.addActionListener(this);
salvab.setBackground(bluex);
salvab.setVisible(false);
migliora = new JButton(" Migliora mosaico ");
migliora.addActionListener(this);
migliora.setBackground(bluex);
migliora.setVisible(false);
nuovob = new JButton(" Nuovo progetto ");
nuovob.addActionListener(this);
nuovob.setBackground(bluex);
nuovob.setVisible(false);

statusInfo = new JTextArea(3,40);
statusInfo.setBorder(BorderFactory.createLineBorder(Color.black));
statusInfo.setBackground(bluex);
JScrollPane scrollArea = new JScrollPane(statusInfo);


panel.add((spiega), BorderLayout.NORTH);
panel.add((panelpane), BorderLayout.CENTER);
panel.add((panel3), BorderLayout.EAST);
panel.add((scrollArea), BorderLayout.SOUTH);

panel3.add(apriimg);
panel3.add(salvab);//3 frame
panel3.add(new JSeparator(JSeparator.HORIZONTAL));
panel3.add(aprimos);
panel3.add(mosaica); // 2 frame
panel3.add(migliora);
panel3.add(new JSeparator(JSeparator.HORIZONTAL));
panel3.add(ok);
panel3.add(superR); // 2 frame
panel3.add(nuovob); // 3 frame
panel3.add(new JSeparator(JSeparator.HORIZONTAL));
panel3.add(chiudi);

frame.pack();
frame.setVisible(true);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});

}// chiude costruttore


// ================ metti mosaico
public void mettiMosaico(){
panelpane.removeAll();
ImageIcon img1 = new ImageIcon("mosaico.jpg");
Image imgesize1 = resize2Icon("mosaico.jpg"); // resize
img1 = new ImageIcon(imgesize1);
JLabel image1 = new JLabel(img1);
image1.setLocation(200,10);
panelpane.add(image1);
panelpane.repaint();
}


// ================= RESIZE MOSAICO

public Image resize2Icon(String image){
Image img;
Image inImage = new ImageIcon(image).getImage();
int maxDim = 500;
double scale = (double) maxDim / (double) inImage.getHeight(null);
if (inImage.getWidth(null) > inImage.getHeight(null))
{
scale = (double) maxDim / (double) inImage.getWidth(null);
}
// Determine size of new image.
//One of them
// should equal maxDim.
int scaledW = (int) (scale * inImage.getWidth(null));
int scaledH = (int) (scale * inImage.getHeight(null));

System.out.println(">> "
+ inImage.getSource().getClass()
+ " aspect ratio = "
+ scaledW + " , " + scaledH);
img = inImage.getScaledInstance(scaledW , scaledH, Image.SCALE_SMOOTH);

return img;
}

// ================= RESIZE IMAGES

public Image resizeIcon(String image){
Image img;
Image inImage = new ImageIcon(image).getImage();
//
int maxDim = 180;
double scale = (double) maxDim / (double) inImage.getHeight(null);
if (inImage.getWidth(null) > inImage.getHeight(null))
{
scale = (double) maxDim / (double) inImage.getWidth(null);
}
// Determine size of new image.
//One of them
// should equal maxDim.
int scaledW = (int) (scale * inImage.getWidth(null));
int scaledH = (int) (scale * inImage.getHeight(null));

//
//
System.out.println(">> "
+ inImage.getSource().getClass()
+ " aspect ratio = "
+ scaledW + " , " + scaledH);
img = inImage.getScaledInstance(scaledW , scaledH, Image.SCALE_SMOOTH);

return img;
}


// ================== img RIFERIMENTO

public void imgRif(){

frameP.setVisible(false);//tolgo frame

rifno=1;
spiega.setText (" Con il mouse indicare l'immagine di riferimento"+newline);

}//fine imgRif





// ================== BARRA PROGRESS

public void barraP(){

final JFrame framePb = new JFrame("ELABORAZIONE in corso");
framePb.setSize(300,1000);
framePb.setBackground(bluex);

statusInfo.append(" Elaborazione in corso... "+newline);

JPanel panelPb=new JPanel(new BorderLayout());
panelPb.setBackground(bluex);
panelPb.setBorder(BorderFactory.createLineBorder(Color.black));
panelPb.setPreferredSize(new Dimension(300,100));

framePb.getContentPane().add(panelPb);

task = new LongTask();

progressBar = new JProgressBar(0, task.getLengthOfTask());
progressBar.setValue(0);
progressBar.setStringPainted(true);
panelPb.add(progressBar);

//Create a timer.
timer = new javax.swing.Timer(ONE_SECOND, new ActionListener() {
public void actionPerformed(ActionEvent evt) {
progressBar.setValue(task.getCurrent());
String s = task.getMessage();
if (task.isDone()) {
Toolkit.getDefaultToolkit().beep();
timer.stop();
statusInfo.append(" Eseguita elaborazione "+newline);
spiega.setText (" 4. Migliora, Salva, Nuovo progetto o Esci"+newline);
superR.setVisible(false);
mosaica.setVisible(false);
salvab.setVisible(true);
migliora.setVisible(true);
nuovob.setVisible(true);
framePb.setVisible(false);
framePb.setCursor(null); //turn off the wait cursor
progressBar.setValue(progressBar.getMinimum());

//panelpane.removeAll();

//inserisco mosaico creato
}
}
});

framePb.pack();
framePb.setVisible(true);
framePb.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
task.go();
timer.start();

framePb.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});




}


// ===================================================================================== EVENTI

public void actionPerformed(ActionEvent e) {

Object source = e.getSource(); //chi ha invocato evento

// ====================================================================================== NUOVO

if((source == nuovo)||(source == nuovob)){
System.out.println("Nuovo");
mio m = new mio();
}


// ====================================================================================== HELP

if(source == help){
System.out.println("Help");

final JFrame framePh = new JFrame(" - H E L P - ");
framePh.setSize(300,1000);

JTextArea help=new JTextArea(" Help per utente! "+newline,5,40);
help.setEditable(false);
help.setBorder(BorderFactory.createLineBorder(Color.black));//bordo
//help.setBackground(bluex);

JButton escih = new JButton(" Esci ");
escih.setBackground(bluex);
escih.addActionListener(new ActionListener(){ //quando premo esci
public void actionPerformed(ActionEvent e){
framePh.setVisible(false); // SQUALLIDO! esci meglio!
}
});

framePh.getContentPane().add(help);

framePh.pack();
framePh.setVisible(true);
}

// ======================================================================================== APRI


if((source == apriimgf) || (source == apriimg)){ //apri + img
System.out.println("Apri");

scelta=1; //immagini
Image imgresize;

JFileChooser fileChooser = new JFileChooser();
fileChooser.addChoosableFileFilter(new ImageFilter());//filtro
fileChooser.setAcceptAllFileFilterUsed(false);
fileChooser.setAccessory(new ImagePreview(fileChooser));//anteprima
fileChooser.setCurrentDirectory(new File("."));
fileChooser.setMultiSelectionEnabled(true);
int status = fileChooser.showOpenDialog(null);

if (status == JFileChooser.APPROVE_OPTION) {
File selectedFiles[] = fileChooser.getSelectedFiles();

if (selectedFiles.length>12){
System.out.println("selezionati piu' di 12 img");
return;
};

if (Nimg>12){
System.out.println("Ho piu' di 12 img");
return;
};

//int imgora = Nimg + selectedFiles.length; //immagini totali caricate fin'ora
int imgPrima = Nimg; //img prima di inserire le selezionate
int imgIns = selectedFiles.length; //immagini inserite ora.

for (int im=0,n=selectedFiles.length; im<n; im++) {

icon = new ImageIcon(selectedFiles[im].getAbsolutePath());
statusInfo.append(" Inserito: " + selectedFiles[im].getName() + newline);

int hicon = icon.getIconHeight();
int wicon = icon.getIconWidth();

if ((hicon>183)||(wicon>225)){
imgresize = resizeIcon(selectedFiles[im].getAbsolutePath()); // resize
icon = new ImageIcon(imgresize);
}

if (ximg>675){
if (yimg>366){
System.out.println(" TROPPE IMG!!! ");
}
else{
ximg=0;
yimg=yimg+ygrid;
}
}

image = new JLabel(icon);


image.setBounds(ximg,yimg,hicon,wicon);

//aggiorno dati IMMAGINI
yimgs[im+imgPrima]=yimg;
ximgs[im+imgPrima]=ximg;
images[im+imgPrima] = image;
himgs[im+imgPrima] = hicon;
wimgs[im+imgPrima] = wicon;

statusInfo.append("");

panelpane.add(images[im+imgPrima], new Integer(0),12-(im+imgPrima)); //ULTIMA SOPRA
//images[im+imgPrima].setLocation(ximgs[im+imgPrima],yimgs[im+imgPrima]);

ximg = ximg + xgrid;
Nimg=Nimg+1; //n img totale

}


ok.setEnabled(true); //abilito
aprimos.setEnabled(false); //abilito
spiega.setText (" 2.Con il mouse spostare le immagini creando un 'mosaico'"+newline);

}

}


// ============================================================================= apri mosaico

if((source == aprimos)||(source == aprimosf)){
System.out.println("Apri mosaico");

scelta=2; //mosaico

JFileChooser fileChooser = new JFileChooser();
fileChooser.addChoosableFileFilter(new ImageFilter());//filtro
fileChooser.setAcceptAllFileFilterUsed(false);
fileChooser.setAccessory(new ImagePreview(fileChooser));//anteprima
fileChooser.setCurrentDirectory(new File("."));
fileChooser.setMultiSelectionEnabled(false);
int status = fileChooser.showOpenDialog(null);

if (status == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();

icon = new ImageIcon(selectedFile.getAbsolutePath());

int hicon = icon.getIconHeight();
int wicon = icon.getIconWidth();

image = new JLabel(icon);
image.setBounds(ximg,yimg,hicon,wicon);

statusInfo.append("");
panelpane.add(image,new Integer(1),1);//dopo sopra

ok.setEnabled(true); //abilito
apriimg.setEnabled(false); //abilito
aprimos.setEnabled(false); //abilito
spiega.setText (" 2. Proseguire"+newline);


}
}


// =============================================================================== SALVA

if(source == salva){
System.out.println("Salva");

try {
FileOutputStream fos = new FileOutputStream ("info.doc"); //doc.ser
ObjectOutputStream oos = new ObjectOutputStream (fos);
String infoo = statusInfo.getText(); // NON E' GIUSTO!!!
oos.writeObject(infoo);
oos.flush();
oos.close();
statusInfo.append(" Salvato il progetto in: info.doc"+newline);
} catch (IOException e1) {
statusInfo.setText (" Unable to save");
e1.printStackTrace(); //scrivo eccezione
}
}

// =============================================================================== PROSEGUI

if(source == ok){
System.out.println("Prosegui");

apriimg.setVisible(false);
aprimos.setVisible(false);
ok.setVisible(false);
mosaica.setVisible(true);

panelpane.removeMouseMotionListener(this);

if (scelta==1){
superR.setVisible(true);
panelpane.revalidate ();
spiega.setText (" 3. Scegliere Mosaicatura o Super-Risoluzione"+newline);

}else{
panelpane.revalidate ();
spiega.setText (" 3. Eseguire Mosaicatura"+newline);

}

}

// ================================================================================= ESCI
if((source == esci)||(source==chiudi)){
System.out.println("Esci");
System.exit(0);
}


// =================================================================================== ANNULLA

if(source == annulla){
System.out.println("Annulla");
}


// ======================================================================================== MOSAICA

if(source == mosaica){
System.out.println("Mosaica");

frameP = new JFrame("Parametri di Mosaicatura");
frameP.setSize(800,800);
frameP.setBackground(bluex);

JPanel panelP=new JPanel(new GridLayout(1,0));
panelP.setBackground(bluex);
panelP.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.setPreferredSize(new Dimension(500,500));

frameP.getContentPane().add(panelP);

JPanel panelP0 = new JPanel(new FlowLayout()); //avvia
panelP0.setBackground(bluex);
panelP0.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.add(panelP0);

JPanel panelP1 = new JPanel(new FlowLayout());//parametri
panelP1.setBackground(bluex);
//panelP1.setLayout(new BoxLayout(panelP1, BoxLayout.Y_AXIS));
panelP1.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.add(panelP1);

JPanel panelP2=new JPanel(new FlowLayout());
panelP2.setBackground(bluex);
panelP2.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.add(panelP2);


//**************** panel 1 : PARAMETRI

JTextArea dico3 = new JTextArea(" Parametri di miscelazione",10,40);
dico3.setEditable(false);
dico3.setBorder(BorderFactory.createLineBorder(Color.black));//bordo

JRadioButton primo = new JRadioButton("First frame");
primo.setActionCommand("first");
primo.setSelected(true);
primo.setBackground(bluex);
JRadioButton secondo = new JRadioButton("Last frame");
secondo.setActionCommand("last");
secondo.setBackground(bluex);
JRadioButton terzo = new JRadioButton("Average");
terzo.setActionCommand("average");
terzo.setBackground(bluex);
JRadioButton quarto = new JRadioButton("Median");
quarto.setActionCommand("median");
quarto.setBackground(bluex);
JRadioButton quinto = new JRadioButton("Feathering");
quinto.setActionCommand("feathering");
quinto.setBackground(bluex);

final ButtonGroup group = new ButtonGroup(); //raggruppo x fare esclusione
group.add(primo);
group.add(secondo);
group.add(terzo);
group.add(quarto);
group.add(quinto);


// ******** panel 0 : avvia
JTextArea dico = new JTextArea(" Se si vuole avviare la mosaicatura premere 'Avvia'" newline" in tal caso se non sono stati settati parametri verranno utilizzati quelli di default",10,40);
dico.setEditable(false);
dico.setBorder(BorderFactory.createLineBorder(Color.black));//bordo

JButton ok1 = new JButton("Avvia");
ok1.setBackground(bluex);
ok1.addActionListener(new ActionListener(){ //quando premo ok ...
public void actionPerformed(ActionEvent e){
String command = group.getSelection().getActionCommand();
statusInfo.append(" Parametri di mosaicatura, miscelazione: "+command + newline);
frameP.setVisible(false); // SQUALLIDO! esci meglio!
barraP();
mettiMosaico();
}
});


// ******** panel 2 : IMG RIFERIMENTO
dico2 = new JTextArea(" Per impostare l'immagine di riferimento" newline " premere 'Imposta' e selezionare l'immagine "+newline,10,40);
dico2.setEditable(false);
dico2.setBorder(BorderFactory.createLineBorder(Color.black));//bordo

JButton imposta = new JButton("Imposta");
imposta.setBackground(bluex);
imposta.addActionListener(new ActionListener(){ //quando premo ok ...
public void actionPerformed(ActionEvent e){
String command = group.getSelection().getActionCommand();
imgRif();

}
});

panelP1.add(dico3);
panelP1.add(primo);
panelP1.add(secondo);
panelP1.add(terzo);
panelP1.add(quarto);
panelP1.add(quinto);

panelP0.add(dico);
panelP0.add(ok1);

panelP2.add(dico2);
panelP2.add(imposta);

primo.addActionListener(this);
secondo.addActionListener(this);

JTabbedPane tabbedPane = new JTabbedPane(); //a schedario
tabbedPane.setBackground(bluex);

tabbedPane.addTab("Avvia Mosaicatura", null, panelP0, null);
tabbedPane.addTab("Parametri", null, panelP1, null);
tabbedPane.addTab("Img Riferimento", null, panelP2, null);
tabbedPane.setSelectedIndex(0);
panelP.add(tabbedPane);

frameP.pack();
frameP.setVisible(true);

}



// ========================================================================== super risoluzione

if(source == superR){
System.out.println("Super-risoluzione");

final JFrame frameP = new JFrame("Parametri di Super-risoluzione");
frameP.setSize(800,800);
frameP.setBackground(bluex);

JPanel panelP = new JPanel(new GridLayout(1,0));
panelP.setBackground(bluex);
panelP.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.setPreferredSize(new Dimension(500,500));

frameP.getContentPane().add(panelP);

JPanel panelP0 = new JPanel(new FlowLayout()); //avvia
panelP0.setBackground(bluex);
panelP0.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.add(panelP0);

JPanel panelP1 = new JPanel(new FlowLayout());//parametri
panelP1.setBackground(bluex);
panelP1.setBorder(BorderFactory.createLineBorder(Color.black));
panelP.add(panelP1);

//**************** panel 1 : PARAMETRI

JTextArea dico3 = new JTextArea(" Parametri di super-risoluzione",10,40);
dico3.setEditable(false);
dico3.setBorder(BorderFactory.createLineBorder(Color.black));//bordo

JRadioButton primo = new JRadioButton("Nearest");
primo.setActionCommand("nearest");
primo.setSelected(true);
primo.setBackground(bluex);
JRadioButton secondo = new JRadioButton("Weighted");
secondo.setActionCommand("weighted");
secondo.setBackground(bluex);

final ButtonGroup group = new ButtonGroup(); //raggruppo x fare esclusione
group.add(primo);
group.add(secondo);


// ******** panel 0 : avvia
JTextArea dico = new JTextArea(" Se si vuole avviare la super-risoluzione premere 'Avvia'" newline" in tal caso se non sono stati settati parametri verranno utilizzati quelli di default",10,40);
dico.setEditable(false);
dico.setBorder(BorderFactory.createLineBorder(Color.black));//bordo

JButton ok1 = new JButton("Avvia");
ok1.setBackground(bluex);
ok1.addActionListener(new ActionListener(){ //quando premo ok ...
public void actionPerformed(ActionEvent e){
String command = group.getSelection().getActionCommand();
statusInfo.append(" Parametri super-risoluzione: "+command + newline);
frameP.setVisible(false); // SQUALLIDO! esci meglio!
barraP();
}
});

panelP1.add(dico3);
panelP1.add(primo);
panelP1.add(secondo);

panelP0.add(dico);
panelP0.add(ok1);

primo.addActionListener(this);
secondo.addActionListener(this);

JTabbedPane tabbedPane = new JTabbedPane(); //a schedario
tabbedPane.setBackground(bluex);

tabbedPane.addTab(" Avvia super-risoluzione", null, panelP0, null);
tabbedPane.addTab(" Parametri", null, panelP1, null);
tabbedPane.setSelectedIndex(0);
panelP.add(tabbedPane);

frameP.pack();
frameP.setVisible(true);

mettiMosaico();

}
};

// ===================================================== Mouse Event

public void mousePressed(MouseEvent e) {

mousex = e.getX(); // Save the x coord of the click
mousey = e.getY(); // Save the y coord of the click

for (int m=0; m<Nimg; m++){
Point p = images[m].getLocation(); //posizione img[m] in panel
px = (int)p.getX();
py = (int)p.getY();
if (mousex >= px && mousex <= (px+images[muovi].getWidth())
&& mousey >= py && mousey <= (py+images[muovi].getHeight())) {//se mouse dentro img
_canDrag = true;
_dragFromX = mousex-px; // how far from left
_dragFromY = mousey-py; // how far from top
muovi = m; //setto immagine da muovere!!!!
if (rifno==0){panelpane.moveToFront(images[muovi]);}//davanti img ke muovo
//se =1 nn mi muove img
}
}//chiudo FOR

if (rifno==1){
statusInfo.append(" Immagine di riferimento: "+ muovi + newline);
frameP.setVisible(true);
dico2.append(" Immagine di riferimento impostata :"+muovi + newline);
rifno=0;
}


}


public void mouseDragged(MouseEvent e) {

if (_canDrag) { // True only if button was pressed inside ball.
//--- Ball pos from mouse and original click displacement
int ballX = e.getX() - dragFromX;
int ballY = e.getY() - dragFromY;

images[muovi].setLocation(_ballX,_ballY);

//--- Don't move the ball off the screen sides
ballX = Math.max(ballX, 0);
ballX = Math.min(ballX, panelpane.getWidth() - images[muovi].getWidth());

//--- Don't move the ball off top or bottom
ballY = Math.max(ballY, 0);
ballY = Math.min(ballY, panelpane.getHeight() - images[muovi].getHeight());

Point p = images[muovi].getLocationOnScreen();
int px = (int)p.getX();
int py = (int)p.getY();

//panelpane.repaint(); // Repaint because position changed.
}

}

public void mouseExited(MouseEvent e) {
_canDrag = false;


}//end mouseExited


public void mouseEntered (MouseEvent e) {} // ignore these events

public void mouseClicked (MouseEvent e) {

}

public void mouseReleased(MouseEvent e) {

//e.consume();

} // ignore these events
public void mouseMoved(MouseEvent e) {}

}// chiude classe
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 7 2009
Added on Nov 23 2004
3 comments
91 views