Olá pessoal,
existe algo em java que sirva pra criar uma seleção?

Olá pessoal,
existe algo em java que sirva pra criar uma seleção?

Alguem…
Me ajudem…
Algum link, alguma dica
Pelo menos me digam se existe pronto
Você quer selecionar os arquivos na tela, ou quer tirar um print screen de parte da tela? Não entendi!
Tenho vários componentes espalhados em um JPanel, quero selecionalos. Bom na verdade eu to fazendo uma gambiarra: eu capituro um ponto pressed do mous e um released
Com dois pontos consigo definir um quadrado e usando contains de java2D consigo determinar de os objetos tao na area de seleção
Olha eu varia a mesma coisa, não acho que seja gambia não!
Tem muito bug chato pra tratar e o desempenho grafico nao ta muito bom, imagino que se ja existisse algo pronto seria mais otimizado.
Agora me diga
existe algo que eu possa desenhar um quadrado passando como parametro dois pontos?
Olha, se fosse no Delphi teria, mas no Java eu não conheço!
E aew!
Olha minha solução para desenhar um quadrado a partir de dois pontos:
Com isso eu faço meu selecionar
Se alguem tem alguma critica/ideia fala ai!
import java.awt.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class JKSSelect extends JComponent{
public JKSSelect(){
super();
this.setBorder(BorderFactory.createTitledBorder(""));
}
public void makeSquare(Point a, Point b){
Point aux;
if(a == null || b == null){
a = new Point(0,0);
b = new Point(0,0);
}
if(a.x == 0 && a.y == 0 && b.x == 0 && b.y == 0){
this.setLocation(0,0);
this.setSize(0,0);
}
if((a.x>=b.x && a.y>b.y) || (a.x<b.x && a.y>=b.y)){
aux = a;
a = b;
b = aux;
}
if(a.x<=b.x && a.y<b.y){
this.setLocation((int) (a.x),(int) (a.y));
this.setSize((int) (b.x-a.x),(int) (b.y-a.y));
}else if(a.x>b.x && a.y<=b.y){
this.setLocation((int) (b.x),(int) (a.y));
this.setSize((int) (a.x-b.x),(int) (b.y-a.y));
}
}
}
Cara tô precisando selecionar um conjunto de pixel que formam uma reta, ou seja eu tenho o algoritimo de Bresenham que desenha alguns pixel em um painel formando uma reta, com esse sua classe é possivel seleionar esse conjunto de pixel.
OBS: eu tenho esse conjuntos de pontos em um estrutura de dados.
E aew! Olha minha solução para desenhar um quadrado a partir de dois pontos:Com isso eu faço meu selecionar
Se alguem tem alguma critica/ideia fala ai!
import java.awt.*; import javax.swing.*; @SuppressWarnings("serial") public class JKSSelect extends JComponent{ public JKSSelect(){ super(); this.setBorder(BorderFactory.createTitledBorder("")); } public void makeSquare(Point a, Point b){ Point aux; if(a == null || b == null){ a = new Point(0,0); b = new Point(0,0); } if(a.x == 0 && a.y == 0 && b.x == 0 && b.y == 0){ this.setLocation(0,0); this.setSize(0,0); } if((a.x>=b.x && a.y>b.y) || (a.x<b.x && a.y>=b.y)){ aux = a; a = b; b = aux; } if(a.x<=b.x && a.y<b.y){ this.setLocation((int) (a.x),(int) (a.y)); this.setSize((int) (b.x-a.x),(int) (b.y-a.y)); }else if(a.x>b.x && a.y<=b.y){ this.setLocation((int) (b.x),(int) (a.y)); this.setSize((int) (a.x-b.x),(int) (b.y-a.y)); } } }
Algum motivo especial para voce utilizar um algoritimo a parte pra desenhar uma reta e nao utilizar o próprio da AWT?
Sim é um trabalho de computacao grafica, e tenho que usar esse algoritimo.
Estou querendo fazer um plus nessa trabalho, depois que desenhar os objetos pedido, quero selecionar alguns deles para poder fazer alguma determinada transformação tais como colocar escala, rotacionar etc.
Essa classe trabalha com seleção de objetos filhos de JComponente.
Mas pro seu caso funcionária assim:
O quadrado representa visualmente um intervalo. Cabe a voce verificar se os pixels estão dentro do intervalo ou nao.
(x1,y1) (x2,y1)
| -------------- |
|---|
| -------------- |
| __________ |
(x1,y2) (x2,y2)
se o pixel: x1<px<x2 && y1<py<y2
ele está selecionado
Pode ser mais eficiente do que isso se voce tiver um mapeamento bidimensionalmente ordenado para esses pixelsh
O problema que esta acontecendo, é pq não estou conseguindo usar a sua classe para selecionar tais pixel, vc não tem um exemplo que possa ajudar nao?
Essa classe trabalha com seleção de objetos filhos de JComponente.Mas pro seu caso funcionária assim:
O quadrado representa visualmente um intervalo. Cabe a voce verificar se os pixels estão dentro do intervalo ou nao.(x1,y1) (x2,y1)
-------------- -------------- __________ (x1,y2) (x2,y2)
se o pixel: x1<px<x2 && y1<py<y2
ele está selecionadoPode ser mais eficiente do que isso se voce tiver um mapeamento bidimensionalmente ordenado para esses pixelsh
Voce deve implementar alguns listeners pra criar esse quadrado no seu painel de forma a capturar o ponto inicial do click e o ponto final. Apos o quadrado formado voce pode utilizar o metodo contains para verificar se cada ponto pertence ou nao ao quadrado. Note que o makeSquare recebe dois pontos. o ponto inicial e o ponto final da seleção.
Use a classe Rectangle2D. Ela já tem implementado os testes de colisão, inserseção e o método contains.