segunda-feira, 31 de dezembro de 2012

TextPane sem quebra de linha.

Melhor forma de evitar a quebra de linha em um TextPane é sobrescrevendo o método  Scrollable Tracks Viewport Width

Exemplo:

private JTextPane noWrapTextPane = new JTextPane() {

        @Override
        public boolean getScrollableTracksViewportWidth() {
            return getUI().getPreferredSize(this).width
                    <= getParent().getSize().width;
        }
    };

sexta-feira, 14 de dezembro de 2012

Valores montários em Real com bean:writer do Stuts

Valores montários em Real com bean writer do Stuts.


O format do BeanWrite do Struts 1 utiliza o DecimalFormat do Java, isso quer dizer que utilizar  vírgula como separação dos centavos (##.000,00) irá causar erro, já que "." é o separador decimal ou monetário e "," é o separador de grupos.

Para resolver esse problema você pode utilizar o atributo locale passando um objeto Locale do Java.

Exemplo:
...
<%@ page import="java.util.Locale"%>
<%
    Locale meuLocal = new Locale( "pt", "BR" );
    request.getSession().setAttribute("meuLocal", meuLocal);

%>

...
< bean:write name="lst" property="saldo" locale="meuLocal" format="##,000.00"/ >
...

quinta-feira, 25 de outubro de 2012

sexta-feira, 21 de setembro de 2012

Para aqueles que não lembram de cabeça todas as variáveis do System.properties, esse site tem uma tabela com as principais.

Como não poderia deixar de ser, criei um “Java System Properties Debug” listar essas propriedades.

Site: http://www.mindspring.com/~mgrand/java-system-properties.htm


Listagem rápida:

file.encoding, file.encoding.pkg, file.separator, java.class.path, java.class.version, java.compiler, java.home, java.io.tmpdir, java.version, java.vendor, java.vendor.url, line.separator, os.name, os.arch, os.version, path.separator, user.dir, user.home, user.language, user.name, user.region e user.timezone



ImageUtil

ImageUtil


E quando você precisa de um redimensionador em lote de imagens?
você pode baixar algum ou ter todo o trabalho de desenvolver um.
Resolvi desenvolver mas com intenção de resolver um problema (redimensionar mais de 100 imagens) e brincar um pouco com o Java pra Desktop.

Resolver meu problema eu consegui, agora brincar, infelizmente não de tempo :(.

Link: http://sourceforge.net/projects/mvbosagendasimp/files/imageUtil.zip/download

Para algo mais profissional (mais opções): http://sourceforge.net/projects/jiu/files/

sexta-feira, 3 de agosto de 2012

Facilitando sua vida com Replica.

Nesta semana precisei criar comando inserts com base nos dados de uma planilha e sabia que utilizar Replica facilitaria meu trabalho.


Passo 1: Exportar planilha no fomato CSV

Passo 2: Importar dados para o Replica
  Obter dados > Arquivo (CTRL+F)

Passo 3: Preparar comando SQL, que seria mais ou menos:
  insert into tbcidade(id, uf, cidade) values (nextval('seq_cidade'), '@', '@');

Passo 4: Gerar SQL.
  Especificar varável, delimitador e Replicar por ELEMENTO.


Replica: https://sourceforge.net/projects/mvbos-replica/files/dist/
Planilha com uf/estado: https://docs.google.com/spreadsheet/ccc?key=0AlrjzjT1KgoTdEJ5eWdZNTBPdTlSLUNnVWxxOWw4eVE

sexta-feira, 20 de julho de 2012

Aprendendo sobre Objetos Java criando um Jogo.

Neste tutorial o autor começa a explicar Orientação a objetos criando um jogo utilizando a ferramenta Greenfoot Object World, criada para isso mesmo.
O tutorial continua nas edições da Oracle Java Magazine, sendo a primeira e a última (na data deste post).
 
Links:

Artigo: http://www.oracle.com/technetwork/articles/javase/wombat-basics-135972.html  
Greenfoot: http://www.greenfoot.org/overview
Oracle Java Magazine:
http://www.oraclejavamagazine-digital.com/javamagazine/premiere2011?sub_id=iafW9TEyyNSf#pg15
http://www.oraclejavamagazine-digital.com/javamagazine/20120708/?sub_id=D3Ftlezo2a3zq#pg25

sexta-feira, 11 de maio de 2012

Esses dias eu precisava tirar vários PrintScreen para um passo-a-passo, e salvar um por um iria dar muitro trabalho, então como bom programador (preguiçoso) crie um auxiliador, nada luxuoso mas funcional.
Ele copia os textos e nomes de arquivos separados por ';' para uma Textarea e imagens PrintScreen para o mesmo diretório, incrementando numéricamente o nome.

Link: http://sourceforge.net/projects/mvbosagendasimp/files/ClipTart.zip/download

domingo, 29 de abril de 2012

Projetos.

Em meus anos de programação, além de trabalhos realizados nas empresas em que trabalhei, tive a oportunidade de desenvolver por aprendizado ou curiosidade diversos sistemas, tanto para Web quanto para Desktop, além de alguns tutoriais.


Alguns dos aplicativos que desenvolvi encontram-se para download no SourceForge (http://sourceforge.net/users/marcusbecker), onde destaco: Split-x (um simples divisor de arquivos), Replica (Ferramenta para desenvolvedores para auxiliar no substituição de dados) e MVBOScript/Framework (projeto de TCC que utiliza uma linguagem própria e modelos pré-definidos para agilizar o desenvolvimento).

Entre Sites e sistemas Web posso citar: RMA Online – sistema para controle de RMA com controle de níveis de acesso de usuário (http://mvbos.com.br/rmaonline/).

Site e Portal do Instituto Zaico – (http://www.zaico.com.br/portal) onde foi desenvolvido um CMS para controle do Portal.

Dori Alimentos - (http://www.dori.com.br) Uma Loja virtual desenvolvida em Java.

Em meu Blog (http://meumundojava.blogspot.com.br) encontram-se artigos e tutoriais que acho interessantes para desenvolvedores.

quinta-feira, 26 de abril de 2012

Caminho da Certificação.


quarta-feira, 4 de abril de 2012

MVBOScript Framework - Extensão do projeto de TCC

Estendendo meu projeto de TCC (MVBOScript) criei um Framework para auxiliar no trabalho de criação de criação dos arquivos fonte XML (Container).

Segue abaixo link contento maiores informações e donwload do Framework:


quarta-feira, 18 de janeiro de 2012

Liferay: Buscando imagens no Image Gallery

HTML:

<form action="<liferay-portlet:actionURL name="igFind" portletConfiguration="true" />" method="post" name="<portlet:namespace />fm">

<input type="text" name="<portlet:namespace />find" />

<input type="submit" value="Find" />

</form>




Classe Portlet:

import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;

import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil;
import com.liferay.portal.kernel.dao.orm.OrderFactoryUtil;
import com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.util.ParamUtil;
import com.liferay.portal.kernel.util.PortalClassLoaderUtil;
import com.liferay.portlet.imagegallery.model.IGImage;
import com.liferay.portlet.imagegallery.service.IGImageLocalServiceUtil;
import com.liferay.util.bridges.mvc.MVCPortlet;

public class NewPortlet extends MVCPortlet {

public void igFind(ActionRequest request, ActionResponse response){

String find = ParamUtil.getString(request, "find");

ClassLoader loader = PortalClassLoaderUtil.getClassLoader();

DynamicQuery query = DynamicQueryFactoryUtil.forClass(IGImage.class, loader)
.add(PropertyFactoryUtil.forName("name").eq(find))
.addOrder(OrderFactoryUtil.asc("name"));

try {
List results = IGImageLocalServiceUtil.dynamicQuery(query, 0, 100);
for(IGImage ig : results){
System.out.println(ig.getName());
}
} catch (SystemException e) {
e.printStackTrace();
}
}
}

quarta-feira, 11 de janeiro de 2012

Resolvendo problemas de codificação nos textos.

Resolvendo problemas de codificação nos textos ao ler/gravar arquivos de texto utilizando InputStreamReader e OutputStreamWriter.

Para ler:

private void loadFile() {
StringBuilder conteudo = new StringBuilder(500);

try {
if (selectedFile.exists()) {
InputStreamReader is = new InputStreamReader(new FileInputStream(selectedFile), Charset.forName("iso-8859-1"));
BufferedReader reader = new BufferedReader(is);

String linha = null;
while ((linha = reader.readLine()) != null) {
conteudo.append(linha).append(System.getProperty("line.separator"));
}
reader.close();
}
} catch (FileNotFoundException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);


} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}

jTextPaneContent.setText(conteudo.toString());
}

Para gravar:

private void saveFile() {

OutputStreamWriter osw = null;

try {
osw = new OutputStreamWriter(new FileOutputStream(selectedFile), Charset.forName("iso-8859-1"));
osw.write(jTextPaneContent.getText());

} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if (osw != null) {
osw.close();
}
} catch (IOException ex) {
Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, ex);
}
}
}
Código fonte contendo um exemplo funcional.