A classe imagePanel do viniGodoy

9 respostas
oitathi

Gente eu tô tentando fazer uma estrutura que contenha uma imagem dentro de um scrollImage e por cima dessa imagem eu preciso criar alguns jLabels… porém, eu não sei como fazer isso… queia saber se eu consigo utilizar a classe imagePanel que o viniGodoy criou e adaptá-la para o que eu preciso. Se eu puder, como devo fazer isso?
Obrigada!

9 Respostas

oitathi

eu tô tentando colocar " a classe imagePanel" dentro de um scrollPane. o código até compila, mas o scroll não tah aparecendo… eu tô fazendo alguma coisa errada?

JImagePanel imagePanel = new JImagePanel("C:\\Users\\Silvia\\Pictures\\bexigas1.jpg");
        JFrame frame = new JFrame("Testando redimensionamento");
        JScrollPane scrollImage = new JScrollPane      (imagePanel,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        frame.add(scrollImage);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setVisible(true);
    }

Obrigada

oitathi

E outra coisa, eu criei cim JLabel teste para ver se ele ficava em cima da imagem, mas não tah funcionando, ele não fica posicionado dentro da imagem. Então são duas coisas: uma: eu não tô conseguindo colocar esse panel dentro do scroll e tb não ô conseguindo sobrepor um label a ele… eu tô faznedo algo errado, ou será q a essa classe não permite isso?

JImagePanel imagePanel = new JImagePanel("C:\\Users\\Silvia\\Pictures\\bexigas1.jpg");
        JFrame frame = new JFrame("Testando redimensionamento");
        JScrollPane scrollImage = new JScrollPane(imagePanel,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollImage.setSize(250,150);
        scrollImage.setLocation(0, 0);
        scrollImage.setVisible(true);
        frame.add(scrollImage);
        JLabel label = new JLabel();
        label.setText("Tathi");
        label.setSize(100, 100);
        label.setLocation(0, 0);
        label.setVisible(true);
        frame.add(label);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setVisible(true);
    }
oitathi

Hehehehe eu de novo… tô apanhando um pouquinho aqui mas consegui que o label aparecesse em cima da imagem… soh q aimagem se redimensiona com o tamanho da janela. Eu preciso q o tamanho da imagem fique sempre igual, ou seja, não seja redimensionavel. Como devo fazer isso?

JImagePanel imagePanel = new JImagePanel("C:\\Users\\Silvia\\Pictures\\bexigas1.jpg");
        JFrame frame = new JFrame("Testando redimensionamento");
        JLabel label = new JLabel();
        label.setText("Tathi");
        label.setSize(100, 100);
        label.setLocation(0, 0);
        label.setVisible(true);
        imagePanel.add(label);
        JScrollPane sb1 = new JScrollPane ( imagePanel );
        sb1.setPreferredSize(new Dimension(15,10));
        sb1.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        frame.add(sb1);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(300,200);
        frame.setVisible(true);
    }
Marky.Vasconcelos

Tem um parametro que acho que é WrapType nessa classe, voce passa para não redimensionar.

E essa classe é um Container como qualquer outro JPanel, então voce pode colocar um LayoutManager e adicionar seu label sem posições absolutas.

oitathi

e como eu passo esse parêmetro??

ViniGodoy

Você faz:

Marky.Vasconcelos

É, FillType não WrapType.

Esse FillType tem os mesmos que voce encontraria para o background do windows, lado a lado, extendido e centralizado.

oitathi

Soh que o problema é q o seguinte: eu tô colocandp esse panel dentro de um scroll e ele redimensiona a imagem para o tamanho do scroll… tem como ele não redimensionar a imagem? deixa-la sempre com o tamanho natural?

oitathi

Eu tô fazendo desse jeito abaixo e encontro dois problemas:

  1. o meu scroll não aparece de jeito nenhum
  2. o label escrito tathi não aparece na coordenada 0,0
public static void main(String[] args) throws IOException {
        JImagePanel imagePanel = new JImagePanel("C:\\Users\\Silvia\\Pictures\\bexigas1.jpg");
        imagePanel.setFillType(JImagePanel.FillType.CENTER);
        JFrame frame = new JFrame("Testando redimensionamento");
        JLabel label = new JLabel();
        label.setText("Tathi");
        label.setSize(100, 100);
        label.setLocation(0, 0);
        label.setVisible(true);
        imagePanel.add(label);
        JScrollPane scrollImage = new JScrollPane(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        scrollImage.setLocation(0,0);
        scrollImage.setSize(10, 10);
        scrollImage.setVisible(true);
        scrollImage.setViewportView(imagePanel);
        frame.add(scrollImage);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(150,200);
        frame.setVisible(true);
        frame.setLayout(null);
    }

}
Criado 6 de outubro de 2010
Ultima resposta 7 de out. de 2010
Respostas 9
Participantes 3