Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java File folder=fc.getSelectedFile(); File[]files=folder.listFiles(新文件过滤器(){ @凌驾 公共布尔接受(文件路径名){ String name=pathname.getName().toLowerCase(); 返回名称.endsWith(“.jpg”) ||name.endsWith(“.png”) ||name.endsWith(“.gif”); } }); model.removeAllElements(); FileModel=getModel(); 用于(文件:文件){ 模型补遗(文件); } if(model.getSize()>0){ model.setSelectedItem(model.getElementAt(0)); } 打破 } } } 公共类FileModel扩展了DefaultComboxModel{ } 公共抽象类AbstractNavigationAction扩展了AbstractAction{ 私有文件模型文件模型; 私人int方向; 公共抽象导航操作(FileModel FileModel,int方向){ this.fileModel=fileModel; 这个方向=方向; fileModel.addListDataListener(新ListDataListener(){ @凌驾 添加了公共无效间隔(ListDataEvent e){ 不动产(); } @凌驾 删除公共无效间隔(ListDataEvent e){ 不动产(); } @凌驾 公共无效内容更改(ListDataEvent e){ 不动产(); } }); 不动产(); } 受保护的不动产(){ setEnabled(getFileModel().getSize()>0); } 公共文件模型getFileModel(){ 返回文件模型; } 公共int getDirection(){ 返回方向; } @凌驾 已执行的公共无效操作(操作事件e){ FileModel=getFileModel(); if(model.getSize()>0){ File=(File)model.getSelectedItem(); int index=model.getIndexOf(文件); 指数+=方向; 如果(指数=model.getSize()){ 指数=0; } file=model.getElementAt(索引); model.setSelectedItem(文件); } } } 公共类PrevAction扩展了AbstractNavigationAction{ 公共PrevAction(文件模型文件模型){ super(fileModel,-1); putValue(名称“”); } } }_Java_Image_Swing_Events - Fatal编程技术网

Java File folder=fc.getSelectedFile(); File[]files=folder.listFiles(新文件过滤器(){ @凌驾 公共布尔接受(文件路径名){ String name=pathname.getName().toLowerCase(); 返回名称.endsWith(“.jpg”) ||name.endsWith(“.png”) ||name.endsWith(“.gif”); } }); model.removeAllElements(); FileModel=getModel(); 用于(文件:文件){ 模型补遗(文件); } if(model.getSize()>0){ model.setSelectedItem(model.getElementAt(0)); } 打破 } } } 公共类FileModel扩展了DefaultComboxModel{ } 公共抽象类AbstractNavigationAction扩展了AbstractAction{ 私有文件模型文件模型; 私人int方向; 公共抽象导航操作(FileModel FileModel,int方向){ this.fileModel=fileModel; 这个方向=方向; fileModel.addListDataListener(新ListDataListener(){ @凌驾 添加了公共无效间隔(ListDataEvent e){ 不动产(); } @凌驾 删除公共无效间隔(ListDataEvent e){ 不动产(); } @凌驾 公共无效内容更改(ListDataEvent e){ 不动产(); } }); 不动产(); } 受保护的不动产(){ setEnabled(getFileModel().getSize()>0); } 公共文件模型getFileModel(){ 返回文件模型; } 公共int getDirection(){ 返回方向; } @凌驾 已执行的公共无效操作(操作事件e){ FileModel=getFileModel(); if(model.getSize()>0){ File=(File)model.getSelectedItem(); int index=model.getIndexOf(文件); 指数+=方向; 如果(指数=model.getSize()){ 指数=0; } file=model.getElementAt(索引); model.setSelectedItem(文件); } } } 公共类PrevAction扩展了AbstractNavigationAction{ 公共PrevAction(文件模型文件模型){ super(fileModel,-1); putValue(名称“”); } } }

Java File folder=fc.getSelectedFile(); File[]files=folder.listFiles(新文件过滤器(){ @凌驾 公共布尔接受(文件路径名){ String name=pathname.getName().toLowerCase(); 返回名称.endsWith(“.jpg”) ||name.endsWith(“.png”) ||name.endsWith(“.gif”); } }); model.removeAllElements(); FileModel=getModel(); 用于(文件:文件){ 模型补遗(文件); } if(model.getSize()>0){ model.setSelectedItem(model.getElementAt(0)); } 打破 } } } 公共类FileModel扩展了DefaultComboxModel{ } 公共抽象类AbstractNavigationAction扩展了AbstractAction{ 私有文件模型文件模型; 私人int方向; 公共抽象导航操作(FileModel FileModel,int方向){ this.fileModel=fileModel; 这个方向=方向; fileModel.addListDataListener(新ListDataListener(){ @凌驾 添加了公共无效间隔(ListDataEvent e){ 不动产(); } @凌驾 删除公共无效间隔(ListDataEvent e){ 不动产(); } @凌驾 公共无效内容更改(ListDataEvent e){ 不动产(); } }); 不动产(); } 受保护的不动产(){ setEnabled(getFileModel().getSize()>0); } 公共文件模型getFileModel(){ 返回文件模型; } 公共int getDirection(){ 返回方向; } @凌驾 已执行的公共无效操作(操作事件e){ FileModel=getFileModel(); if(model.getSize()>0){ File=(File)model.getSelectedItem(); int index=model.getIndexOf(文件); 指数+=方向; 如果(指数=model.getSize()){ 指数=0; } file=model.getElementAt(索引); model.setSelectedItem(文件); } } } 公共类PrevAction扩展了AbstractNavigationAction{ 公共PrevAction(文件模型文件模型){ super(fileModel,-1); putValue(名称“”); } } },java,image,swing,events,Java,Image,Swing,Events,错误很多,我将帮助您纠正这些错误 首先,FileDialog-fdial应该放在类attr上。稍后引用它,但不要创建局部变量 现在问题出在actionPerformed方法中。首先,equals方法不起作用,因为getActionCommand返回的字符串不对应 在方法actionPerformed中,您应该在不同的情况之间切换,然后退出,仅此而已 用于在文件列表中保留当前文件的j变量。增加和减少它不应超过数组的边界或ArrayIndexOfBoundException 固定代码为: publi

错误很多,我将帮助您纠正这些错误

首先,
FileDialog-fdial应该放在类attr上。稍后引用它,但不要创建局部变量

现在问题出在
actionPerformed
方法中。首先,
equals
方法不起作用,因为
getActionCommand
返回的字符串不对应

在方法
actionPerformed
中,您应该在不同的情况之间切换,然后退出,仅此而已

用于在文件列表中保留当前文件的
j
变量。增加和减少它不应超过数组的边界或
ArrayIndexOfBoundException

固定代码为:

public class picframe extends Thread implements ActionListener
{
  JTree tr;
  JScrollPane jsp;
  JFrame f;
  JButton b1,b2,b3;
  JLabel lab;
  File fl;
  File[] flist;
  ImageIcon ig;
  int k,j=0;
  FileDialog fdial;

  picframe ()
  {
    f=new JFrame("My Frame");
    f.setVisible(true);
    f.setLayout(null);


    lab=new JLabel();
    lab.setBounds(100,50,1166,500);
    f.add(lab);

    b1=new JButton(" <| ");
    b1.setBounds(486,600,100,30);
    b1.setEnabled(false);
    f.add(b1);
    b1.addActionListener(this);



    b2=new JButton(" |> ");
    b2.setBounds(786,600,100,30);
    f.add(b2);
    b2.setEnabled(false);
    b2.addActionListener(this);

    b3=new JButton("Open");
    b3.setBounds(633,650,100,30);
    f.add(b3);
    b3.addActionListener(this);

    f.pack();
    f.setSize(1366,768);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public void actionPerformed(ActionEvent ae)
  {

    if(ae.getActionCommand().equals("Open"))
    {
      fdial=new FileDialog(f,"Open Box",FileDialog.LOAD);
      fdial.setSize(300,300);
      fdial.setVisible(true);
      String str=fdial.getDirectory();
      fl=new File(str);
      flist=fl.listFiles();
      b2.setEnabled(true);
      j = 0;
      if (flist != null)
        while(j<flist.length)
        {
          if(flist[j].isFile())
          {
            if(flist[j].getName().toLowerCase().endsWith(".jpg"))
            {
              ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
              lab.setIcon(ig);
              break;

            }
          }

          j++;
        }


    }

    if(ae.getActionCommand().equals(" <| "))
    {
      --j;
      if (flist != null)
        if(j<0 )  {
          j = -1;
          lab.setText("no image");
        } else {

          while(j<flist.length)
          {
            if(flist[j].isFile())
            {
              if(flist[j].getName().toLowerCase().endsWith(".jpg"))
              {
                ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
                lab.setIcon(ig);
                b1.setEnabled(true);
                break;
              }
            }

            j--;
          }
        }
    }

    if(ae.getActionCommand().equals(" |> "))
    {
      ++j;

      if (flist != null)
        if(j>=flist.length){
          j = flist.length;
          lab.setText("no image");
        } else  {
          while(j<flist.length)
          {
            if(flist[j].isFile())
            {
              if(flist[j].getName().toLowerCase().endsWith(".jpg"))
              {
                ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
                lab.setIcon(ig);
                b1.setEnabled(true);
                break;

              }
            }

            j++;
          }
        }
    }



  }
  public static void main(String args[])
  {
    new picframe ();
  }

} 
公共类picframe扩展线程实现ActionListener
{
JTree-tr;
JScrollPane-jsp;
jf框架;
按钮b1、b2、b3;
JLabel实验室;
文件fl;
文件[]flist;
图像图标;
int k,j=0;
文件对话框;
picframe()
{
f=新JFrame(“我的框架”);
f、 setVisible(真);
f、 setLayout(空);
lab=新的JLabel();
实验室设置边界(100,501166500);
f、 添加(实验室);
b1=新的JButton(“”);
b2.立根(786600100,30);
f、 添加(b2);
b2.设置启用(错误);
b2.addActionListener(本);
b3=新的按钮(“打开”);
b3.立根(633650100,30);
f、 添加(b3);
b3.添加ActionListener(本);
f、 包装();
f、 设置大小(1366768);
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
已执行的公共无效行动(行动事件ae)
{
如果(ae.getActionCommand().equals(“打开”))
{
fdial=新建文件对话框(f,“打开框”,FileDialog.LOAD);
fdial.setSize(300300);
fdial.setVisible(真);
字符串str=fdial.getDirectory();
fl=新文件(str);
flist=fl.listFiles();
b2.设置启用(真);
j=0;
如果(flist!=null)

虽然没有fdial.getDirectory(),但图像不会显示。如果你想查看,可以查看它!对不起,你是对的,但是你可以简单地使用
flist[j]
,它包含你感兴趣的文件的路径和名称。我更新了“更新2”这是一个很好的完整的例子,可能是对其他一些问题的回答,不确定它是否适合OP的问题。@romanc是的,我试图解释OP试图做什么,并决定展示一个可能的解决方案。我的主要观点是我们可以说,试图修复一些根本上被破坏的东西是不好的做法,但我们也可以说教人们钓鱼(这就是为什么我喜欢你的答案)我不确定我是否考虑过创建对
FileDialogpublic class BetterBrowser {

    public static void main(String[] args) {
        new BetterBrowser();
    }

    public BetterBrowser() {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
                } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
                }

                JFrame frame = new JFrame("Test");
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLayout(new BorderLayout());
                frame.add(new BrowserPane());
                frame.pack();
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }

        });
    }

    public class BrowserPane extends JPanel {

        private FileModel fileModel;
        private JButton open;
        private JButton next;
        private JButton prev;

        private JLabel image;

        public BrowserPane() {
            fileModel = new FileModel();
            setLayout(new BorderLayout());

            JToolBar tb = new JToolBar();
            tb.add((open = new JButton(new OpenAction(fileModel))));

            add(tb, BorderLayout.NORTH);

            JPanel navPane = new JPanel(new FlowLayout(FlowLayout.CENTER));
            navPane.add((prev = new JButton(new PrevAction(fileModel))));
            navPane.add((next = new JButton(new NextAction(fileModel))));

            add(navPane, BorderLayout.SOUTH);
            add(new JScrollPane((image = new JLabel())));

            fileModel.addListDataListener(new ListDataListener() {
                @Override
                public void intervalAdded(ListDataEvent e) {
                }

                @Override
                public void intervalRemoved(ListDataEvent e) {
                }

                @Override
                public void contentsChanged(ListDataEvent e) {
                    if (e.getIndex0() == -1 && e.getIndex1() == -1) {
                        File file = (File) fileModel.getSelectedItem();
                        try {
                            ImageIcon icon = new ImageIcon(ImageIO.read(file));
                            image.setIcon(icon);
                        } catch (IOException exp) {
                            exp.printStackTrace();;
                            image.setIcon(null);
                        }
                    }
                }
            });
        }

        @Override
        public Dimension getPreferredSize() {
            return new Dimension(400, 400);
        }

    }

    public class OpenAction extends AbstractAction {

        private FileModel model;

        public OpenAction(FileModel model) {
            this.model = model;
            putValue(NAME, "Open");
        }

        public FileModel getModel() {
            return model;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            JFileChooser fc = new JFileChooser();
            fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            fc.setMultiSelectionEnabled(false);
            switch (fc.showOpenDialog((Component) e.getSource())) {
                case JFileChooser.APPROVE_OPTION:
                    File folder = fc.getSelectedFile();
                    File[] files = folder.listFiles(new FileFilter() {
                        @Override
                        public boolean accept(File pathname) {
                            String name = pathname.getName().toLowerCase();
                            return name.endsWith(".jpg")
                                            || name.endsWith(".png")
                                            || name.endsWith(".gif");
                        }

                    });

                    model.removeAllElements();

                    FileModel model = getModel();
                    for (File file : files) {
                        model.addElement(file);
                    }

                    if (model.getSize() > 0) {
                        model.setSelectedItem(model.getElementAt(0));
                    }
                    break;
            }
        }

    }

    public class FileModel extends DefaultComboBoxModel<File> {
    }

    public abstract class AbstractNavigationAction extends AbstractAction {

        private FileModel fileModel;
        private int direction;

        public AbstractNavigationAction(FileModel fileModel, int direction) {
            this.fileModel = fileModel;
            this.direction = direction;
            fileModel.addListDataListener(new ListDataListener() {
                @Override
                public void intervalAdded(ListDataEvent e) {
                    updateState();
                }

                @Override
                public void intervalRemoved(ListDataEvent e) {
                    updateState();
                }

                @Override
                public void contentsChanged(ListDataEvent e) {
                    updateState();
                }

            });
            updateState();
        }

        protected void updateState() {
            setEnabled(getFileModel().getSize() > 0);
        }

        public FileModel getFileModel() {
            return fileModel;
        }

        public int getDirection() {
            return direction;
        }

        @Override
        public void actionPerformed(ActionEvent e) {
            FileModel model = getFileModel();
            if (model.getSize() > 0) {
                File file = (File) model.getSelectedItem();
                int index = model.getIndexOf(file);

                index += direction;
                if (index < 0) {
                    index = model.getSize() - 1;
                } else if (index >= model.getSize()) {
                    index = 0;
                }
                file = model.getElementAt(index);
                model.setSelectedItem(file);
            }
        }

    }

    public class PrevAction extends AbstractNavigationAction {

        public PrevAction(FileModel fileModel) {
            super(fileModel, -1);
            putValue(NAME, "< Previous");
        }

    }

    public class NextAction extends AbstractNavigationAction {

        public NextAction(FileModel fileModel) {
            super(fileModel, 1);
            putValue(NAME, "Next >");
        }

    }

}
public class picframe extends Thread implements ActionListener
{
  JTree tr;
  JScrollPane jsp;
  JFrame f;
  JButton b1,b2,b3;
  JLabel lab;
  File fl;
  File[] flist;
  ImageIcon ig;
  int k,j=0;
  FileDialog fdial;

  picframe ()
  {
    f=new JFrame("My Frame");
    f.setVisible(true);
    f.setLayout(null);


    lab=new JLabel();
    lab.setBounds(100,50,1166,500);
    f.add(lab);

    b1=new JButton(" <| ");
    b1.setBounds(486,600,100,30);
    b1.setEnabled(false);
    f.add(b1);
    b1.addActionListener(this);



    b2=new JButton(" |> ");
    b2.setBounds(786,600,100,30);
    f.add(b2);
    b2.setEnabled(false);
    b2.addActionListener(this);

    b3=new JButton("Open");
    b3.setBounds(633,650,100,30);
    f.add(b3);
    b3.addActionListener(this);

    f.pack();
    f.setSize(1366,768);
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }

  public void actionPerformed(ActionEvent ae)
  {

    if(ae.getActionCommand().equals("Open"))
    {
      fdial=new FileDialog(f,"Open Box",FileDialog.LOAD);
      fdial.setSize(300,300);
      fdial.setVisible(true);
      String str=fdial.getDirectory();
      fl=new File(str);
      flist=fl.listFiles();
      b2.setEnabled(true);
      j = 0;
      if (flist != null)
        while(j<flist.length)
        {
          if(flist[j].isFile())
          {
            if(flist[j].getName().toLowerCase().endsWith(".jpg"))
            {
              ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
              lab.setIcon(ig);
              break;

            }
          }

          j++;
        }


    }

    if(ae.getActionCommand().equals(" <| "))
    {
      --j;
      if (flist != null)
        if(j<0 )  {
          j = -1;
          lab.setText("no image");
        } else {

          while(j<flist.length)
          {
            if(flist[j].isFile())
            {
              if(flist[j].getName().toLowerCase().endsWith(".jpg"))
              {
                ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
                lab.setIcon(ig);
                b1.setEnabled(true);
                break;
              }
            }

            j--;
          }
        }
    }

    if(ae.getActionCommand().equals(" |> "))
    {
      ++j;

      if (flist != null)
        if(j>=flist.length){
          j = flist.length;
          lab.setText("no image");
        } else  {
          while(j<flist.length)
          {
            if(flist[j].isFile())
            {
              if(flist[j].getName().toLowerCase().endsWith(".jpg"))
              {
                ig=new ImageIcon(fdial.getDirectory()+flist[j].getName());
                lab.setIcon(ig);
                b1.setEnabled(true);
                break;

              }
            }

            j++;
          }
        }
    }



  }
  public static void main(String args[])
  {
    new picframe ();
  }

}