스윙에서 이미지를 선택하고 이미지의 오른쪽 절반을 클릭하여 다음 이미지로 이동하고 왼쪽을 클릭 할 수있는 이미지 브라우저를 만들려고합니다. 이전 반으로 이동하려면 절반.스윙으로 클릭 가능한 이미지 만들기
MouseListeners를 사용하여이 작업을 시도했지만 MouseClicked는 pack();
을 사용하지 않으면 등록하지 않지만 UI를 드래그하지 않으면 이미지가 사라집니다. 추가 할 수있는 간단한 방법이 있나요
private void open()
{
File file = getFile();
if(file != null)
{
displayFile(file);
}
}
private File getFile()
{
File file = null;
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION)
{
file = chooser.getSelectedFile();
}
return file;
}
private void displayFile(File file)
{
//some code to resize the image to the JFrame's dimensions
}
// ------------------------------------------
// Display Buffered Image
public void displayBufferedImage(ImageIcon image)
{
this.setContentPane(new JScrollPane(new JLabel(image )));
this.validate();
}
:
class ImageFrame extends JFrame
{
private final JFileChooser chooser;
private BufferedImage image = null;
int WIDTH = 1080; int HEIGHT = 620;
// ==========================================
// constructor
public ImageFrame (int width, int height)
{
// --------------------------------------
// setup the frame's attributes
this.setTitle("Image-P3 Player");
this.setSize(width,height);
// add a menu to the frame
addMenu();
// --------------------------------------
// setup the file chooser dialog
chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
}
addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent e){
System.out.println("Mouse clicked!");
if(e.getButton() == 1){
int x = e.getX();
System.out.println("X: "+x);
if(x>540){
System.out.println("Next image!");
}
else{
System.out.println("Previous image!");
}
}
}
});
은 그런 방법이 시리즈로 이끄는 JMenu를 있었다 :
이
는 이미지를 표시하는 데 사용 된 코드입니다 JScrollPane 또는 JLabel 에의 MouseListener를 사용하면 (자), GUI에 표시되고있는 이미지가 컴퍼넌트를 튕겨 내지 않고 사용자 클릭을 등록하도록 (듯이) 할 수가 있습니다.
인스턴스 필드로'JLabel'의 단일 인스턴스를 생성 'MouseListener'를 추가하십시오. – MadProgrammer
레이블의 새로운 인스턴스를 생성하는 대신'JLabel'의'icon' 속성을 변경하십시오. 오른쪽/왼쪽 절반? 어색하게 들린다. 레이블을 사용하여 이미지를 표시 할 수 있지만 마우스 또는 키보드 활성화에 응답 할 수있는 단추 ('<' and '>'또는 이와 유사한 텍스트 기반)가 있습니다. –