-1

我正在尝试使用 JFileChooser 打开和查看文件,但在查看文件时遇到问题。任何帮助或批评都是开放的,谢谢队友。

package jmenu_bar;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import javax.swing.border.BevelBorder;


/**
 *
 * @author Stafford J Villavicencio
 */

public class Jmenu_Bar extends JFrame
{   

    public static void main(String[] args) 
    {

        //create JFrame
        final JFrame frame = new JFrame();
        frame.setTitle(" JMenuBar Practice ");
        frame.setSize(400,400);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        //create JMenuBar
        JMenuBar jbar = new JMenuBar();
        jbar.setBorder(new BevelBorder(BevelBorder.RAISED));
        //add JMenuBar to JFrame
        frame.setJMenuBar(jbar);

        //create JMenu File
        JMenu file = new JMenu(" File");
        //add seperator between sub-Options
        file.addSeparator();
        //add JMenu file to JMenuBAr
        jbar.add(file);

        //create JMenuItem exit 
        JMenuItem exit = new JMenuItem(" Exit");
        //create ActionListener for exit
        exit.addActionListener(new ActionListener()
        {
            @Override
           public void actionPerformed(ActionEvent e)
           {   
               System.exit(0);
           } 
        });
        //add exit to file menu
        file.add(exit);

        /*IM trying to have JMenuItem "open" actualy open and display selected file within the JFrame......>
        *create JMenuItem open
        */
        JMenuItem open = new JMenuItem(" Open");
        //create actionListener for open
        open.addActionListener(new ActionListener()
        {
            JFileChooser fChoose = new JFileChooser();

            @Override
           public void actionPerformed(ActionEvent e)
            {
                fChoose.showOpenDialog(frame);

            }
        });
        file.add(open);

            //create JMenu edit
            JMenu edit = new JMenu(" Edit");
            jbar.add(edit);

            //create JMenuItem save
            JMenuItem save = new JMenuItem(" Save");
            edit.add(save);


    }
}
4

3 回答 3

0

文件选择所做的只是为您提供要读取的文件的名称。您仍然负责读取文件的文本并将其加载到 Swing 组件中。

我建议使用 JTextArea 来显示文本文件。然后你可以使用 read(...) 方法。

首先,您应该阅读有关如何使用文件选择器的 Swing 教程。然后,一旦您获得文件名,您就可以执行以下操作:

FileReader reader = new FileReader( the file name );
BufferedReader br = new BufferedReader( reader );
textArea.read(br, null);

代码未经测试,我会让你制定细节。

于 2013-04-07T23:07:44.810 回答
0

我查看了您的程序,它对我没有任何显示...您只是搞砸了,让我们看看我的 JFile Chooser 代码.. 此代码只是一个示例,此代码打开 .gif、.jpg 文件,意味着它可以用作图像查看器,

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ImageViewer extends JFrame 
{
    static JFileChooser imageChooser = new JFileChooser();
    static JLabel imageLabel = new JLabel();


  public static void main(String args[]) 
  {
    //construct frame
    new ImageViewer().show();
  }
  public ImageViewer() 
  {
    // create frame
    setTitle("Image Viewer");
    setResizable(false);
    addWindowListener(new WindowAdapter() 
    {
      public void windowClosing(WindowEvent e) 
      {
        exitForm(e);
      }
    });
    getContentPane().setLayout(new GridBagLayout());


    GridBagConstraints gridConstraints = new GridBagConstraints();
    String[] ext = new String[] {"gif", "jpg"};

    gridConstraints.gridy = 0;
    getContentPane().add(imageChooser, gridConstraints);
    imageChooser.addActionListener(new ActionListener() 
    {
      public void actionPerformed(ActionEvent e) 
      {
        imageChooserActionPerformed(e);
      }
    });
        imageLabel.setPreferredSize(new Dimension(270, 300));
        imageLabel.setBorder(BorderFactory.createLineBorder(Color.RED));    imageLabel.setOpaque(true);
        imageLabel.setBackground(Color.white);
        imageLabel.setHorizontalAlignment(SwingConstants.CENTER);
        imageLabel.setVerticalAlignment(SwingConstants.CENTER);
        gridConstraints.gridx = 1;
        gridConstraints.gridy = 0;
        gridConstraints.insets = new Insets(10, 10, 10, 10);
        getContentPane().add(imageLabel, gridConstraints);

        pack();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((int) (0.5 * (screenSize.width - getWidth())), (int) (0.5 * (screenSize.height - getHeight())), getWidth(), getHeight());


  }
  private void imageChooserActionPerformed(ActionEvent e) 
  {
    // create and display graphic if open selected
    if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION))
    {
      ImageIcon myImage = new ImageIcon(imageChooser.getSelectedFile().toString());
      imageLabel.setIcon(myImage);
    }
  }


  private void exitForm(WindowEvent e)
  {
    System.exit(0);
  }
}
于 2013-04-07T23:12:39.750 回答
0

我认为您是在说您不知道如何查看用户选择的文件。

        final JFileChooser jfc = new JFileChooser();

        int returnVal = jfc.showOpenDialog(this);

        if (returnVal == JFileChooser.APPROVE_OPTION) {
           File selected = jfc.getSelectedFile();
           //do something with the file

    } 
}

用于int returnVal = jfc.showOpenDialog(this);启动打开的对话框。这样,当用户单击按钮(取消或批准(打开))时,它将返回一个 int 值。因此,if 语句说:如果单击的按钮是“打开的”,则获取他们选择的文件,将其称为已选择并对其进行处理。

让我知道我是否需要更深入地指导您。

于 2013-04-07T23:13:11.857 回答