import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import java.io.FileOutputStream;
import java.util.*;
import java.text.*;
public class TabbedPanelTest extends JFrame implements ActionListener{
String[] bookname={"File","View","Keep","keep1"};
    JTabbedPane tab = new JTabbedPane();
    JTextField tf = new JTextField();
 
    boolean changed = false;
    boolean haveName = false;
    File file=null;
       
    JMenu Xmenu = new JMenu("文件");
JMenuItem itemX1 = new JMenuItem("新建");
JMenuItem itemX2 = new JMenuItem("打开");
JMenuItem itemX3 = new JMenuItem("保存");
JMenuItem itemX4 = new JMenuItem("退出");

JMenu Ymenu = new JMenu("编辑");
JMenuItem itemY1 = new JMenuItem("剪切");
JMenuItem itemY2 = new JMenuItem("复制");
JMenuItem itemY3 = new JMenuItem("粘贴");
JMenuItem itemY4 = new JMenuItem("全选");

        
      
    
public TabbedPanelTest(){
JTable table = new JTable();
    JTextField textField = new JTextField("文本输入框");

JPanel panel=new JPanel();
panel.add(table);
panel.add(textField);
tab.add(bookname[0],panel);
tab.add(bookname[1],new JButton());
tab.add(bookname[2],new JTextField());

Xmenu.add(itemX1);
Xmenu.add(itemX2);
Xmenu.add(itemX3);
Xmenu.add(itemX4);
Ymenu.add(itemY1);
Ymenu.add(itemY2);
Ymenu.add(itemY3);
Ymenu.add(itemY4);
JMenuBar menubar = new JMenuBar();
menubar.add(Xmenu);
menubar.add(Ymenu);
setJMenuBar(menubar);

itemX2.addActionListener(this);


Container cp = getContentPane();
cp.add(tab,BorderLayout.CENTER);
cp.add(tf,BorderLayout.SOUTH);
//显示当前坐标
tab.addMouseMotionListener(new MouseMotionAdapter()
  {
   public void mouseMoved(MouseEvent e)
   {
    int x=e.getX(); 
    int y=e.getY(); 
    String s="当前坐标为:"+x+','+y; 
    tf.setText(s);     
   }
  });
         tf.addMouseMotionListener(new MouseMotionAdapter()
  {
   public void mouseMoved(MouseEvent e)
   {
    int x=e.getX(); 
    int y=e.getY(); 
    String s="当前坐标为:"+x+','+y; 
    tf.setText(s);     
   }
  });
        //显示标签上的文字
tab.addChangeListener(new ChangeListener(){public void stateChanged(ChangeEvent e)
{tf.setText(tab.getTitleAt(tab.getSelectedIndex()));}
}
);
}
public void actionPerformed(ActionEvent e)
{
Object obj;
obj = e.getSource();
if(obj == itemX2)
doOpen();
}
 void doOpen(){
int select,flag;
File tmpfile = null;
ExampleFileFilter filter;
JFileChooser chooser;
FileInputStream fin;
byte buf[];
if(changed){
select = JOptionPane.showConfirmDialog(this, "aa");
switch (select){
case JOptionPane.YES_OPTION:
break;
case JOptionPane.NO_OPTION:
flag = 1;
break;
default:
    flag = 0;
    break;
                }
            }
else{flag = 1;}
if(flag == 1){
changed = false;
filter = new ExampleFileFilter();
filter.addExtension("dd");
filter.setDescription("");
if(file != null)
chooser = new JFileChooser(file.getPath());
else
chooser = new JFileChooser();
chooser.setFileFilter(filter);
select = chooser.showOpenDialog(this);
if(select == JFileChooser.APPROVE_OPTION){
tmpfile = chooser.getSelectedFile();
try{
fin = new FileInputStream(tmpfile);
buf = new byte[(int)tmpfile.length()];
fin.read(buf);
fin.close();
//text.setText(new String(buf));
changed = false;
haveName = true;
file = tmpfile;
setTitle(file.getName());
}
catch(FileNotFoundException e)
{JOptionPane.showMessageDialog(this, "ss");}
catch(IOException e)
{JOptionPane.showMessageDialog(this, "ff");}
}
}
}
/**
 * @param args
 */
public static void main(String[] args) {
TabbedPanelTest tpt = new TabbedPanelTest();

tpt.setTitle("");
tpt.setExtendedState(JFrame.MAXIMIZED_BOTH);

       tpt.show();
}}基本介绍一下,顶部是菜单,下面是JTabbedPane,问题是顶部菜单中文件的打开功能不能实现,其实现在也就这么一个功能,大家看一下吧,谢谢了 谢谢  在线等

解决方案 »

  1.   

    ExampleFileFilter这个东西是什么,根本不能识别,导包导不进去
      

  2.   

    答:程序简单改了下。能正确运行。在JDK1.6下运行(因为没有你的ExampleFileFilter类,我干脆直接
    使用JDK1.6的FileNameExtensionFilter类来取代你的ExampleFileFilter类)。
    import java.awt.*;
    import java.awt.event.*; 
    import java.io.*; 
    import java.util.*; 
    import java.text.*; 
    import javax.swing.*;
    import javax.swing.event.*;
    import javax.swing.filechooser.*;public class TabbedPanelTest extends JFrame implements ActionListener{ 
    String[] bookname={"File","View","Keep","keep1"}; 
        JTabbedPane tab = new JTabbedPane(); 
        JTextField tf = new JTextField(); 
        JTextArea textArea=null;
        
        boolean changed = false; 
        boolean haveName = false; 
        File file=null; 
          
        JMenu Xmenu = new JMenu("文件"); 
    JMenuItem itemX1 = new JMenuItem("新建"); 
    JMenuItem itemX2 = new JMenuItem("打开"); 
    JMenuItem itemX3 = new JMenuItem("保存"); 
    JMenuItem itemX4 = new JMenuItem("退出"); JMenu Ymenu = new JMenu("编辑"); 
    JMenuItem itemY1 = new JMenuItem("剪切"); 
    JMenuItem itemY2 = new JMenuItem("复制"); 
    JMenuItem itemY3 = new JMenuItem("粘贴"); 
    JMenuItem itemY4 = new JMenuItem("全选");         
          
        
    public TabbedPanelTest(){ 
    JTable table = new JTable(); 
         textArea= new JTextArea("文本输入框",6,60); 
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JPanel panel=new JPanel(); 
    panel.add(table); 
    panel.add(textArea); 
    tab.add(bookname[0],panel); 
    tab.add(bookname[1],new JButton()); 
    tab.add(bookname[2],new JTextField()); Xmenu.add(itemX1); 
    Xmenu.add(itemX2); 
    Xmenu.add(itemX3); 
    Xmenu.add(itemX4); 
    Ymenu.add(itemY1); 
    Ymenu.add(itemY2); 
    Ymenu.add(itemY3); 
    Ymenu.add(itemY4); 
    JMenuBar menubar = new JMenuBar(); 
    menubar.add(Xmenu); 
    menubar.add(Ymenu); 
    setJMenuBar(menubar); itemX2.addActionListener(this); 
    Container cp = getContentPane(); 
    cp.add(tab,BorderLayout.CENTER); 
    cp.add(tf,BorderLayout.SOUTH); 
    //显示当前坐标 
    tab.addMouseMotionListener(new MouseMotionAdapter() 
      { 
      public void mouseMoved(MouseEvent e) 
      { 
        int x=e.getX(); 
        int y=e.getY(); 
        String s="当前坐标为:"+x+','+y; 
        tf.setText(s);    
      } 
      }); 
            tf.addMouseMotionListener(new MouseMotionAdapter() 
      { 
      public void mouseMoved(MouseEvent e) 
      { 
        int x=e.getX(); 
        int y=e.getY(); 
        String s="当前坐标为:"+x+','+y; 
        tf.setText(s);    
      } 
      }); 
            //显示标签上的文字 
    tab.addChangeListener(new ChangeListener(){public void stateChanged(ChangeEvent e) 
    {tf.setText(tab.getTitleAt(tab.getSelectedIndex()));} 

    ); 

    public void actionPerformed(ActionEvent e) 

    Object obj; 
    obj = e.getSource(); 
    if(obj == itemX2) 
    doOpen(); 

    void doOpen(){ 
    int select,flag=1; 
    File tmpfile = null; 
    FileNameExtensionFilter  filter; 
    JFileChooser chooser; 
    FileInputStream fin; 
    byte buf[]; 
    if(changed){ 
    select = JOptionPane.showConfirmDialog(this, "aa"); 
    switch (select){ 
    case JOptionPane.YES_OPTION: 
    break; 
    case JOptionPane.NO_OPTION: 
    flag = 1; 
    break; 
    default: 
        flag = 0; 
        break; 
                    } 
                } 
    else{flag = 1;} 
    if(flag == 1){ 
    changed = false; 
    filter = new FileNameExtensionFilter("所有的.txt文件", "txt"); 
    //filter.addExtension("dd"); 
    //filter.setDescription(""); 
    if(file != null) 
    chooser = new JFileChooser(file.getPath()); 
    else 
    chooser = new JFileChooser(); 
    chooser.setFileFilter(filter); 
    select = chooser.showOpenDialog(this); 
    if(select == JFileChooser.APPROVE_OPTION){ 
    tmpfile = chooser.getSelectedFile(); try{ 
    fin = new FileInputStream(tmpfile); 
    buf = new byte[(int)tmpfile.length()]; 
    fin.read(buf); 
    fin.close(); 
    textArea.setText(new String(buf)); 
    changed = false; 
    haveName = true; 
    file = tmpfile; 
    setTitle(file.getName()); 

    catch(FileNotFoundException e) 
    {JOptionPane.showMessageDialog(this, "ss");} 
    catch(IOException e) 
    {JOptionPane.showMessageDialog(this, "ff");} 



    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
    TabbedPanelTest tpt = new TabbedPanelTest(); tpt.setTitle(""); 
    tpt.setExtendedState(JFrame.MAXIMIZED_BOTH);       tpt.show(); 
    } } 
      

  3.   

    hoogee兄弟:你的结贴率是不是太低了呢?
      

  4.   

    不知你要的是不是这个效果. 我新加了一个 JTextArea jta = new JTextArea(20,30); //中间的显示区
    (已把你的ExampleFileFilter注释掉了)import java.awt.BorderLayout;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JMenu;
    import javax.swing.JMenuBar;
    import javax.swing.JMenuItem;
    import javax.swing.JOptionPane;
    import javax.swing.JPanel;
    import javax.swing.JTabbedPane;
    import javax.swing.JTable;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.event.ChangeEvent;
    import javax.swing.event.ChangeListener;
    public class TabbedPanelTest extends JFrame implements ActionListener{ 
    String[] bookname={"File","View","Keep","keep1"}; 
    JTabbedPane tab = new JTabbedPane();
    JTextField tf = new JTextField(); 
    JTextArea jta = new JTextArea(20,30); //中间的显示区 boolean changed = false; 
    boolean haveName = false; 
    File file=null;  JMenu Xmenu = new JMenu("文件"); 
    JMenuItem itemX1 = new JMenuItem("新建"); 
    JMenuItem itemX2 = new JMenuItem("打开"); 
    JMenuItem itemX3 = new JMenuItem("保存"); 
    JMenuItem itemX4 = new JMenuItem("退出");  JMenu Ymenu = new JMenu("编辑"); 
    JMenuItem itemY1 = new JMenuItem("剪切"); 
    JMenuItem itemY2 = new JMenuItem("复制"); 
    JMenuItem itemY3 = new JMenuItem("粘贴"); 
    JMenuItem itemY4 = new JMenuItem("全选"); 
    public TabbedPanelTest(){ 
    JTable table = new JTable(); 
    JTextField textField = new JTextField("文本输入框"); 

    JPanel panel=new JPanel(); 
    panel.add(table); 
    panel.add(textField); 
    tab.add(bookname[0],panel); 
    tab.add(bookname[1],new JButton()); 
    tab.add(bookname[2],new JTextField());  Xmenu.add(itemX1); 
    Xmenu.add(itemX2); 
    Xmenu.add(itemX3); 
    Xmenu.add(itemX4); 
    Ymenu.add(itemY1); 
    Ymenu.add(itemY2); 
    Ymenu.add(itemY3); 
    Ymenu.add(itemY4); 
    JMenuBar menubar = new JMenuBar(); 
    menubar.add(Xmenu); 
    menubar.add(Ymenu); 
    setJMenuBar(menubar);  itemX2.addActionListener(this); 
    Container cp = getContentPane(); 
    cp.add(tab,BorderLayout.NORTH); 
    cp.add(jta,BorderLayout.CENTER); 
    cp.add(tf,BorderLayout.SOUTH); 
    // 显示当前坐标 
    tab.addMouseMotionListener(new MouseMotionAdapter() 

    public void mouseMoved(MouseEvent e) 

    int x=e.getX(); 
    int y=e.getY(); 
    String s="当前坐标为:"+x+','+y; 
    tf.setText(s);    

    }); 
    tf.addMouseMotionListener(new MouseMotionAdapter() 

    public void mouseMoved(MouseEvent e) 

    int x=e.getX(); 
    int y=e.getY(); 
    String s="当前坐标为:"+x+','+y; 
    tf.setText(s);    

    }); 
    //显示标签上的文字 
    tab.addChangeListener(new ChangeListener(){public void stateChanged(ChangeEvent e) 
    {tf.setText(tab.getTitleAt(tab.getSelectedIndex()));} 

    ); 

    public void actionPerformed(ActionEvent e) 

    Object obj; 
    obj = e.getSource(); 
    if(obj == itemX2) 
    doOpen(); 

    void doOpen(){ 
    int select,flag = 1; 
    File tmpfile = null; 
    //ExampleFileFilter filter; 
    JFileChooser chooser; 
    FileInputStream fin; 
    byte buf[]; 
    if(changed){ 
    select = JOptionPane.showConfirmDialog(this, "aa"); 
    switch (select){ 
    case JOptionPane.YES_OPTION: 
    break; 
    case JOptionPane.NO_OPTION: 
    flag = 1; 
    break; 
    default: 
    flag = 0; 
    break; 

    }else{
    flag = 1;

    if(flag == 1){ 
    changed = false; 
    //filter = new ExampleFileFilter(); 
    //filter.addExtension("dd"); 
    //filter.setDescription(""); 
    if(file != null) 
    chooser = new JFileChooser(file.getPath()); 
    else 
    chooser = new JFileChooser(); 
    //chooser.setFileFilter(filter); 
    select = chooser.showOpenDialog(this); 
    if(select == JFileChooser.APPROVE_OPTION){ 
    tmpfile = chooser.getSelectedFile(); 
    try{ 
    fin = new FileInputStream(tmpfile); 
    buf = new byte[(int)tmpfile.length()]; 
    fin.read(buf); 
    fin.close(); 
    // text.setText(new String(buf)); 
    changed = false; 
    haveName = true; 
    file = tmpfile; 
    jta.setText(new String(buf)); // i/o之后就把内容写到中间的显示区中
    setTitle(file.getName()); 

    catch(FileNotFoundException e) 
    {JOptionPane.showMessageDialog(this, "ss");} 
    catch(IOException e) 
    {JOptionPane.showMessageDialog(this, "ff");} 



    /** 
     * @param args 
     */ 
    public static void main(String[] args) { 
    TabbedPanelTest tpt = new TabbedPanelTest();  tpt.setTitle(""); 
    tpt.setExtendedState(JFrame.MAXIMIZED_BOTH);  tpt.show(); 
    } }