caste1982 (Normal User)
Newbie
Messaggi: 1
Iscritto: 19/05/2006
|
Ciao!! Devo fare un progetto e non so sviluppare un punto. In Pratica carico un'immagine su una jLabel e con un JSlider devo variare le gradazioni di blu sull'immagine. Qui riporto il codice
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.*;
import javax.swing.event.*;
import java.awt.event.*;
import java.io.File;
import javax.imageio.*;
import java.awt.Image.*;
import java.awt.image.*;
import java.io.*;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.*;
import javax.swing.filechooser.*;
/**
* <p>Title: </p>
* <p>Description: </p>
* <p>Copyright: Copyright (c) 2006</p>
* <p>Company: </p>
* @author not attributable
* @version 1.0
*/
public class Frame1 extends JFrame {
XYLayout xYLayout1 = new XYLayout();
JSlider jSlider1 = new JSlider( 0 ,255,0);
JTextField jTextField1 = new JTextField();
JLabel jLabel1 = new JLabel();
JButton jButton1 = new JButton();
JScrollPane jScrollPane1 = new JScrollPane(jLabel1);
BufferedImage immagine;
Color c;
public Frame1() {
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
jSlider1.setMajorTickSpacing(10);
jSlider1.setMinorTickSpacing(5);
jSlider1.setPaintTicks(true);
jSlider1.addChangeListener(new Frame1_jSlider1_changeAdapter(this));
jSlider1.setPaintLabels(true);
this.setTitle("Rilevamento ponti");
this.getContentPane().setLayout(xYLayout1);
this.setSize(1024,768);
jLabel1.setBorder(BorderFactory.createLoweredBevelBorder());
jButton1.setText("Inserire immagine");
jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
jScrollPane1.setAutoscrolls(true);
this.getContentPane().add(jScrollPane1, new XYConstraints(15, 23, 627, 457));
jScrollPane1.getViewport().add(jLabel1, null);
this.getContentPane().add(jTextField1, new XYConstraints(16, 594, 33, 19));
this.getContentPane().add(jSlider1, new XYConstraints(13, 496, 630, 68));
this.getContentPane().add(jButton1, new XYConstraints(298, 610, -1, 22));
}
public static void main (String args[]){
Frame1 f = new Frame1();
f.setVisible(true);
}
public class ENVIFilter extends FileFilter{
public boolean accept(File f){
String str = f.getName().toLowerCase();
return str.endsWith(".tiff")||f.isDirectory();
}
public String getDescription(){
return "Immagine tiff";
}
}
void jSlider1_stateChanged(ChangeEvent e) {
try{
String alfa = String.valueOf(jSlider1.getValue());
jTextField1.setText(alfa);
c= new Color(jSlider1.getValue());
jTextField1.setSelectionColor(c);
int w = immagine.getHeight();
int h = immagine.getWidth();
int [] p = new int [w*h];
immagine.setRGB(0,0,w,h,p,0,w);
Graphics2D g2 = immagine.createGraphics();
g2.drawImage(immagine,0,0,w/2,h/3,0,0,w,h,this);
MemoryImageSource mis = new MemoryImageSource(w,h,p,0,w);
}
catch(Exception ed){}
}
void jButton1_actionPerformed(ActionEvent e) {
JFileChooser fc= new JFileChooser();
fc.setAcceptAllFileFilterUsed(true);
fc.setFileFilter(new ENVIFilter());
int response= fc.showOpenDialog(this);
if(response==JFileChooser.APPROVE_OPTION){
File f = fc.getSelectedFile();
try {
BufferedImage buff = ImageIO.read(f);
int w = buff.getWidth();
int h = buff.getHeight();
immagine = new BufferedImage(w,h, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g2 = immagine.createGraphics();
g2.drawImage(buff,0,0,null);
g2.dispose();
jLabel1.setIcon(new ImageIcon(immagine));
repaint();
}
catch(Exception er) {}
}
}
}
class Frame1_jSlider1_changeAdapter implements javax.swing.event.ChangeListener {
Frame1 adaptee;
Frame1_jSlider1_changeAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void stateChanged(ChangeEvent e) {
adaptee.jSlider1_stateChanged(e);
}
}
class Frame1_jButton1_actionAdapter implements java.awt.event.ActionListener {
Frame1 adaptee;
Frame1_jButton1_actionAdapter(Frame1 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton1_actionPerformed(e);
}
}
---------------------------------------------------
Come si può correggere.. grazie mille
|