package tirateima.gui.variaveis; import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics; import java.awt.Point; import java.util.ArrayList; import java.util.List; import javax.swing.JTextArea; @SuppressWarnings("serial") public class Texto extends JTextArea{ public Integer tamanho; public Point posicaoOriginal; public Double proporcao = 1.0; /** * Construtor que recebe o conteudo (texto), tamanho e posicao e insere esses parametros * @param conteudo * @param tamanho * @param posicao */ public Texto(String conteudo,Integer tamanho,Point posicao){ this.tamanho = tamanho; this.posicaoOriginal = posicao; this.setText(conteudo); } /** * Copia a lista de textos criando uma nova lista, para nao copiar por * referencia. * @param textos - lista de Texto * @return nova lista de Texto copiada */ public static List<Texto> copiarTextos(List<Texto> textos){ List<Texto> copiaTextos = new ArrayList<Texto>(); for(Texto t : textos){ copiaTextos.add(new Texto(t.getText(), t.getFont().getSize(),t.posicaoOriginal)); } return copiaTextos; } public void setProporcao(double prop) { if (prop <= 0) throw new AssertionError("Proporção negativa ou nula."); proporcao = prop; this.setSize(getTamanhoParaProporcao()); this.validate(); } private Dimension getTamanhoParaProporcao() { Integer largura = (int)Math.round(this.getMinimumSize().getWidth() * proporcao); Integer altura = (int)Math.round(this.getMinimumSize().getHeight() * proporcao); return new Dimension(largura, altura); } @Override public void paint(Graphics g) { Integer tamanhoAtual = (int)Math.round(tamanho.doubleValue() * proporcao); this.setFont(new Font("Arial",Font.BOLD,tamanhoAtual)); this.setOpaque(false); super.paint(g); } }