初めてのポスターです!MouseListenerにJLabelを追加
私はJavaフォトビューアギャラリーに取り組んでいます。 私はにArrayListからMouseListenerにすべてのラベルを追加したい。だから私は新しい大きなウィンドウでユーザーがクリックした画像を開いて開くことができます。
私は、ユーザーがiピクチャの数を選択できるファイルチューザを持っています。私はそれらをスケーリングし、それらを入れて:
ArrayListスケーリング=新しいArrayList();
エラー:型部品における方法addMouseListener(のMouseListener)は引数に適用されない(新規のActionListener(){})
Iは
for (int i=0; i< scaled.size(); i++){
panel.add(new JLabel(new ImageIcon (scaled.get(i))));
JLabel l = new JLabel(new ImageIcon(scaled.get(i)));
l.addMouseListener(this); //<- Compiler Error
}
に完全なコードを使用しようとします。
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Label;
import java.awt.List;
import java.awt.event.*;
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import javax.swing.*;
public class ImageViewer {
public static void main(String[] args) {
JFrame frame = new ImageViewerFrame();
frame.setTitle("PhotoViewer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
@SuppressWarnings("serial")
class ImageViewerFrame extends JFrame implements MouseListener{
JLabel label;
JFileChooser chooser;
JMenuBar menubar;
JMenu menu;
JMenuItem menuitem;
JPanel panel = new JPanel();
// JLabel l1= new JLabel("First");
// JLabel l2= new JLabel("Second");
// JLabel l3= new JLabel("Third");
// JLabel l4= new JLabel("Fourth");
public ArrayList<File> images = new ArrayList <File>();
public ImageViewerFrame() {
setSize(500,500);
panel.setLayout(new GridLayout(0,5));
label = new JLabel();
add(label);
add(panel);
JButton test = new JButton ("TEST");
test.addMouseListener(this);
panel.add(test);
panel.setVisible(true);
chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setMultiSelectionEnabled(true);
menubar = new JMenuBar();
setJMenuBar(menubar);
menu = new JMenu("File");
menubar.add(menu);
menuitem = new JMenuItem("Open");
menu.add(menuitem);
ArrayList<ImageIcon> AL = new ArrayList<ImageIcon>();
ArrayList<Image> scaled = new ArrayList<Image>();
menuitem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event){
int result = chooser.showOpenDialog(null);
if(result == JFileChooser.APPROVE_OPTION) {
//label.setIcon(new ImageIcon(name));
File[] f = chooser.getSelectedFiles();
for(int i=0; i< f.length; i++)
{
images.add(f[i]);
ImageIcon imageicon = new ImageIcon(f[i].toString());
AL.add(imageicon);
}
for (ImageIcon x : AL){
System.out.println(x);
Image image = x.getImage();
Image newimg = image.getScaledInstance(120,120, java.awt.Image.SCALE_SMOOTH);
scaled.add(newimg);
}
for (int i=0; i< scaled.size(); i++){
panel.add(new JLabel(new ImageIcon (scaled.get(i))));
JLabel l = new JLabel(new ImageIcon(scaled.get(i)));
l.addMouseListener(this);
}
}
}
});
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}
どうしますか? – user7185318
明確にしないと申し訳ありません。 JLabel lをMouseListenerに追加することはできません – StackOverFlowUser1997
MyListenerのようなMouseListenerの内部クラスを作成してから、そのabtractメソッドを実装してみてください。あなたのforループでは、l.addMouseListener(new MyMouseListener()); また、オラクルのドキュメント[MouseListener](http://docs.oracle.com/javase/tutorial/uiswing/events/mouselistener)も参照してください。htmlの)Imが間違っている場合 –