Personalizar um JComponent

0 respostas
pdform

Eaê, galera!

Estou criando um JComponent personalizado. Nesse componente, adiciono uma borda escrita por mim, que está funcionando perfeitamente bem, e um JScrollPane, com um JPanel dentro. O problema é que usei o GridBagLayout para ocupar ao máximo o espaço disponível mas, mesmo assim, o JScrollPane fica minúsculo na tela. O que pode estar acontecendo? Abaixo segue o código, com os métodos que tratam exclusivamente da interface:

public class VarFile extends JComponent {
/* ... */
public VarFile(String nome, Variavel tipo){
		if(nome == null){
			throw new IllegalArgumentException("Nome inválido!");
		}
		
		if(tipo == null){
			throw new IllegalArgumentException("Tipo inválido");
		}
		
		this.nome = nome;
		this.titulo = this.nome;
		this.tipo = tipo;
		borda = new FileBorder(titulo);
		super.setBorder(borda);
		this.file = null;
		this.buffer = new ArrayList<Variavel>();
		this.janelas = new ArrayList<Janela>();
		layout = new GridBagLayout();
		
		initialize();		
		construirGB();
	}

        /* ... */

public Border getBorder(){
		return borda;
	}
	
	public void setBorder(Border border){}
	
	public Dimension getMinimumSize(){
		Insets ins = getInsets();
		Dimension ms = tipo.getMinimumSize();
		int largura = ms.width * (buffer.size() == 0 ? 1 : buffer.size()) + ins.left + ins.right;
		int altura = ms.height + ins.top + ins.left;
		return new Dimension(largura, altura);
	}
	
	public Dimension getMaximumSize(){
		Dimension d = getMinimumSize();
		return new Dimension(d.width * 10, d.height * 10);
	}
	
	public Dimension getPreferredSize(){
		return getMaximumSize();
	}
	
	public void finalize(){
		try{
			close();
		}catch(Exception e){}
	}
	
	private void initialize(){
		setBackground(Color.white);
		
		setLayout(new GridBagLayout());
		GridBagConstraints temp = new GridBagConstraints();
		temp.anchor = GridBagConstraints.NORTHWEST;
		temp.fill = GridBagConstraints.BOTH;
		temp.weightx = temp.weighty = 1.0;
		
		add(getSpPrincipal(), temp);
	}
	
	private JScrollPane getSpPrincipal(){
		if(spPrincipal == null){
			spPrincipal = new JScrollPane(getPVisualizacao(), JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
		}
		return spPrincipal;
	}
	
	private JPanel getPVisualizacao(){
		if(pVisualizacao == null){
			pVisualizacao = new JPanel();
			pVisualizacao.setLayout(layout);
		}
		return pVisualizacao;
	}

Obrigado pela atenção!

Criado 4 de novembro de 2007
Respostas 0
Participantes 1