/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* JLineWriter.java
*
* Created on 1-mag-2011, 15.21.44
*/
package jlinewriter.graphics;
import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
import java.awt.Desktop;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.filechooser.FileFilter;
import jlinewriter.LineWriter;
/**
*
* @author Paolo
*/
public class JLineWriter
extends javax.
swing.
JFrame {
private LineWriter writer;
/** Creates new form JLineWriter */
public JLineWriter() {
try {
UIManager.
setLookAndFeel(new NimbusLookAndFeel
());
JOptionPane.
showMessageDialog(this,
"Look & Feel not supported");
}
initComponents();
this.
background.
setImage(Toolkit.
getDefaultToolkit().
getImage(getClass
().
getResource("/jlinewriter/graphics/images/back.png")));
this.writer = new LineWriter();
this.initChooser();
}
private void initChooser() {
this.chooser.removeChoosableFileFilter(this.chooser.getAcceptAllFileFilter());
this.
chooser.
addChoosableFileFilter(new FileFilter() {
@Override
public boolean accept
(File f
) {
String path
= f.
getAbsolutePath();
String ext
= path.
substring(path.
length() - 3
);
if (ext.equalsIgnoreCase("png") || ext.equalsIgnoreCase("bmp") || ext.equalsIgnoreCase("jpg") || ext.equalsIgnoreCase("jpeg") || f.isDirectory()) {
return true;
}
return false;
}
@Override
public String getDescription
() {
return "Immagini (png, bmp, jpg, jpeg)";
}
});
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
background = new jlinewriter.graphics.JBackground();
panel
= new javax.
swing.
JPanel();
fraseLabel
= new javax.
swing.
JLabel();
saveButton
= new javax.
swing.
JButton();
textPanel
= new javax.
swing.
JPanel();
textLabel
= new javax.
swing.
JLabel();
setTitle("JLineWriter - by Paolo Ricciuti (C)");
setResizable(false);
panel.
setBackground(new java.
awt.
Color(0, 0, 0
));
fraseLabel.
setForeground(new java.
awt.
Color(255, 255, 255
));
fraseLabel.setText("Frase:");
saveButton.setText("Salva Immagine");
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
saveButtonActionPerformed(evt);
}
});
javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel);
panel.setLayout(panelLayout);
panelLayout.setHorizontalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addComponent(fraseLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.
addComponent(frase, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 310,
Short.
MAX_VALUE))
.addComponent(saveButton))
.addContainerGap())
);
panelLayout.setVerticalGroup(
panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(fraseLabel)
.addComponent(frase, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.
addPreferredGap(javax.
swing.
LayoutStyle.
ComponentPlacement.
RELATED, 32,
Short.
MAX_VALUE)
.addComponent(saveButton)
.addGap(20, 20, 20))
);
textPanel.
setBackground(new java.
awt.
Color(0, 0, 0
));
textLabel.
setForeground(new java.
awt.
Color(255, 255, 255
));
textLabel.setText("<html>Questa applicazione permette di creare delle foto con una frase nascosta. Il programma nasconde la frase in una immagine che all'apparenza è formata da sole linee nere ma che diventerà visibile inclinando lo schermo del computer oppure strizzando un poco gli occhi. Un esempio di foto di questo genere si trova di sfondo a questo programma!!</html>");
javax.swing.GroupLayout textPanelLayout = new javax.swing.GroupLayout(textPanel);
textPanel.setLayout(textPanelLayout);
textPanelLayout.setHorizontalGroup(
textPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(textPanelLayout.createSequentialGroup()
.addContainerGap()
.
addComponent(textLabel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 550,
Short.
MAX_VALUE)
.addContainerGap())
);
textPanelLayout.setVerticalGroup(
textPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(textPanelLayout.createSequentialGroup()
.addContainerGap()
.
addComponent(textLabel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, 163,
Short.
MAX_VALUE)
.addContainerGap())
);
javax.swing.GroupLayout backgroundLayout = new javax.swing.GroupLayout(background);
background.setLayout(backgroundLayout);
backgroundLayout.setHorizontalGroup(
backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(backgroundLayout.createSequentialGroup()
.addContainerGap()
.addGroup(backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(textPanel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE)
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
backgroundLayout.setVerticalGroup(
backgroundLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(backgroundLayout.createSequentialGroup()
.addContainerGap()
.addComponent(panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.
addPreferredGap(javax.
swing.
LayoutStyle.
ComponentPlacement.
RELATED, 77,
Short.
MAX_VALUE)
.addComponent(textPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(background, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.
addComponent(background, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE)
);
java.
awt.
Dimension screenSize
= java.
awt.
Toolkit.
getDefaultToolkit().
getScreenSize();
setBounds((screenSize.width-606)/2, (screenSize.height-428)/2, 606, 428);
}// </editor-fold>//GEN-END:initComponents
private void saveButtonActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_saveButtonActionPerformed
int retval=this.chooser.showSaveDialog(this);
try {
this.writer.createImage(this.frase.getText());
this.writer.saveImage(this.chooser.getSelectedFile());
JOptionPane.
showMessageDialog(this,
"Immagine salvata correttamente!!");
}
}
}//GEN-LAST:event_saveButtonActionPerformed
/**
* @param args the command line arguments
*/
public static void main
(String args
[]) {
public void run() {
new JLineWriter().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private jlinewriter.graphics.JBackground background;
private javax.
swing.
JLabel fraseLabel
;
private javax.
swing.
JPanel panel
;
private javax.
swing.
JButton saveButton
;
private javax.
swing.
JLabel textLabel
;
private javax.
swing.
JPanel textPanel
;
// End of variables declaration//GEN-END:variables
}