Olá pessoal
Estou com o seguinte problema: Preciso ter uma lista com uma imagem de fundo estática.
Já tentei:
1º Colocar a imagem num JPanel - mas ao colocar a lista por cima, esta fica menor do que o JPanel.
2º Colocar a imagem como fundo do JList - mas os itens da lista aparecem por trás da imagem.
3º Colocar a imagem como fundo do JScrollPanel - mas a imagem se move ao movimentar a lista.
[quote=bbmany]Olá pessoal
Estou com o seguinte problema: Preciso ter uma lista com uma imagem de fundo estática.
Já tentei:
1º Colocar a imagem num JPanel - mas ao colocar a lista por cima, esta fica menor do que o JPanel.
2º Colocar a imagem como fundo do JList - mas os itens da lista aparecem por trás da imagem.
3º Colocar a imagem como fundo do JScrollPanel - mas a imagem se move ao movimentar a lista.
Todas soluções são bem-vindas.
Obrigada.[/quote]
Crie um DefaultListModel com a imagem setada insira na criação do objeto Jlist que por sua vez insere no JScrollPanel.
Ex:
DefaultListModel modelLstMarcas= new DefaultListModel(){
public void paintComponent(Graphics g){
g.drawImage(Componente ImageIcon,0,0,tamanhoX,tamanhoY,modelLstMarcas);}
};
Jlist lstMarcas = new JList(modelLstMarcas);
lstMarcas.setSelectionBackground(Color.orange);
lstMarcas.setBackground(Color.DARK_GRAY);
lstMarcas.setForeground(Color.WHITE);
JCrollPane scrollLstMarcas= new JScrollPane(lstMarcas);
scrollLstMarcas.setBounds(new Rectangle(15, 15, 136, 166));
scrollLstMarcas.setBorder(BorderFactory.createEtchedBorder(Color.lightGray, Color.black));
scrollLstMarcas.setBorder(BorderFactory.createBevelBorder(2));
scrollLstMarcas.setFont(new Font("Verdana", Font.BOLD, 12));
Não consegui implementar sua solução. Poderia me explicar melhor?[/quote]
Oi… Está meio difícil de testar pois não estou em casa mas creio que deva funcionar vamos lá…
public class FrmdoPaint {
private static Image principalPlanodeFundo;
private JFrame framePrincipal;
private JDesktopPane panePrincipal;
//Contrutor
public FrmdoPaint(){
//aqui pego imagem de um tipo imageIco "getImage()"
principalPlanodeFundo = (new ImageIcon("Foto.png").getImage());
//crio o model
DefaultListModel modelLstPlanoFundo= new DefaultListModel();
//Crio a lista e pinto com a imagem principalPlanodeFundo que está no tamanho 500,800
lstPlanoFundo = new JList(modelLstPlanoFundo){
public void paintComponent(Graphics g){
g.drawImage(principalPlanodeFundo,0,0,500,800,scrollPlanofundo);}};
JScrollPane scrollLstPlanoFundo= new JScrollPane(lstPlanoFundo);
scrollLstPlanoFundo.setsize(500,800);
scrollLstPlanoFundo.setLocation(20,20);
//Crio o Painel que vai receber os componentes
panePrincipal = new JDesktopPane();
panePrincipal.add(scrollLstPlanoFundo);
//Crio o frame e adiciono o painel
framePrincipal = new JFrame();
framePrincipal.setSize(800,600);
framePrincipal.add(panePrincipal);
framePrincipal.setVisible(true);
}
}
Estou sem IDE para testar más creio que isso já te ajude a resolver seu problema.
se quiser adicionar itens na lista adicione no DefaultListModel:
[quote=bbmany]Testei e consegui colocar a imagem no fundo mas não consegui exibir os valores da lista
:([/quote]
Está adicionando corretamente os valores?
Chegando em casa depois da universidade faço um teste, infelizmente não tenho aula de laboratório na segunda…
Creio que pode estar acontecendo é os valores estarem por baixo, não previ isto, desculpe…
tente adicionar um label ou coisa do gênero diretamente no JList somente para teste e ver se aparece pois, parece que o DefaultListModel não suporta o método repaint().