2。文件选取器中,表示用的LIST BUTTON不能押下,为什么?
9 个解决方案
#1
拿本Swing的书翻一下就知道了。如果是在windows下面用的话,可以用java.awt.FileDialog 跟windows的打开对话框完全一样,估计是调用windows的API,不能跨平台
#2
其实问题就在这里,由于AWT组件是一种对等组件,由于自身的缺点,在多平台上可能会出现问题。所以才有了SWING组件。我想,JFILECHOOSER本身不能读取文件图标可能就是跨平台做出的一种牺牲。但我想,有没有什么方法,能让JFILECHOOSER读取本地的文件系统,从而能够显示默认图标。
我想问,大家以前在做项目时,有没有类似的现象,如果有,是怎么解决的。如果没有解决,那客户允许这样的文件选取器吗?
我想问,大家以前在做项目时,有没有类似的现象,如果有,是怎么解决的。如果没有解决,那客户允许这样的文件选取器吗?
#3
再说一句,我觉得java.awt.FileDialog 是可以跨平台的,只不过是AWT的对等组件的体系结构在绘制窗口时调用的是本地的用户界面组件。而不是在容器中自己绘制。不过,这样的话,在多个平台上是窗体否能表现一致就很值得怀疑。不过,我仅仅用的是FILEDIALGO。所以,FILEDIALOG是否在多平台上没有问题,就需要高手们来解答了。
#4
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class ZipTest extends JFrame implements ActionListener
{
private JComboBox fileList=new JComboBox();
private JTextArea fileText=new JTextArea();
private JScrollPane pane;
private JMenuItem openItem,exitItem;
private String zipname;
public ZipTest()
{
setTitle("ZipTest");
setSize(300,400);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JMenuBar mbar=new JMenuBar();
JMenu m=new JMenu("File");
m.setMnemonic('F');
openItem=new JMenuItem("Open",'O');
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
openItem.addActionListener(this);
m.add(openItem);
exitItem=new JMenuItem("eXit",'X');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
exitItem.addActionListener(this);
m.add(exitItem);
mbar.add(m);
fileList.addActionListener(this);
Container c=getContentPane();
c.add(mbar,"North");
c.add(fileList,"South");
//////////////////////////////////////////////////////////////////
fileText.setEditable(false);//设置为只读属性
pane=new JScrollPane(fileText);//使textarea可以有滚动条
c.add(pane,"Center");
///////////////////////////////////////////////////////////////////////
//c.add(fileText,"Center");
//show();
}
public void actionPerformed(ActionEvent evt)
{
Object source=evt.getSource();
if(source==openItem)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".zip")||f.isDirectory();
}
public String getDescription()
{
return "ZIP FILES";
}
});
int r=chooser.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
zipname=chooser.getSelectedFile().getPath();
scanZipFile();
}
}
else if(source==exitItem) System.exit(0);
else if(source==fileList)
loadZipFile((String)fileList.getSelectedItem());
}
public void scanZipFile()
{
fileList.removeAllItems();
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null)
{
fileList.addItem(entry.getName());
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public void loadZipFile(String name)
{
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
fileText.setText("");
while((entry=zin.getNextEntry())!=null)
{
if(entry.getName().equals(name))
{
BufferedReader in=new BufferedReader(new InputStreamReader(zin));
String s;
while((s=in.readLine())!=null)
fileText.append(s+"\n");
}
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public static void main(String args[])
{
Frame f=new ZipTest();
f.show();
}
}
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class ZipTest extends JFrame implements ActionListener
{
private JComboBox fileList=new JComboBox();
private JTextArea fileText=new JTextArea();
private JScrollPane pane;
private JMenuItem openItem,exitItem;
private String zipname;
public ZipTest()
{
setTitle("ZipTest");
setSize(300,400);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JMenuBar mbar=new JMenuBar();
JMenu m=new JMenu("File");
m.setMnemonic('F');
openItem=new JMenuItem("Open",'O');
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
openItem.addActionListener(this);
m.add(openItem);
exitItem=new JMenuItem("eXit",'X');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
exitItem.addActionListener(this);
m.add(exitItem);
mbar.add(m);
fileList.addActionListener(this);
Container c=getContentPane();
c.add(mbar,"North");
c.add(fileList,"South");
//////////////////////////////////////////////////////////////////
fileText.setEditable(false);//设置为只读属性
pane=new JScrollPane(fileText);//使textarea可以有滚动条
c.add(pane,"Center");
///////////////////////////////////////////////////////////////////////
//c.add(fileText,"Center");
//show();
}
public void actionPerformed(ActionEvent evt)
{
Object source=evt.getSource();
if(source==openItem)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".zip")||f.isDirectory();
}
public String getDescription()
{
return "ZIP FILES";
}
});
int r=chooser.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
zipname=chooser.getSelectedFile().getPath();
scanZipFile();
}
}
else if(source==exitItem) System.exit(0);
else if(source==fileList)
loadZipFile((String)fileList.getSelectedItem());
}
public void scanZipFile()
{
fileList.removeAllItems();
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null)
{
fileList.addItem(entry.getName());
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public void loadZipFile(String name)
{
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
fileText.setText("");
while((entry=zin.getNextEntry())!=null)
{
if(entry.getName().equals(name))
{
BufferedReader in=new BufferedReader(new InputStreamReader(zin));
String s;
while((s=in.readLine())!=null)
fileText.append(s+"\n");
}
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public static void main(String args[])
{
Frame f=new ZipTest();
f.show();
}
}
#5
to:
jeston
你这里有点象的就是 int r=chooser.showOpenDialog(this);
不过,THIS我也用过了,不行。你的这段代码我也调试了,也不行,你能显示系统对应的文件图标吗?
jeston
你这里有点象的就是 int r=chooser.showOpenDialog(this);
不过,THIS我也用过了,不行。你的这段代码我也调试了,也不行,你能显示系统对应的文件图标吗?
#6
我这里完全可以呀。
#7
我装的是jdk1.3
#8
用MVC控制一下
可以使用自己定义的图标
可以使用自己定义的图标
#9
怪呀
我用的是JBUILDER 4。0。也是java 1.3.0-C。怎么就没有呢?
我用的是JBUILDER 4。0。也是java 1.3.0-C。怎么就没有呢?
#1
拿本Swing的书翻一下就知道了。如果是在windows下面用的话,可以用java.awt.FileDialog 跟windows的打开对话框完全一样,估计是调用windows的API,不能跨平台
#2
其实问题就在这里,由于AWT组件是一种对等组件,由于自身的缺点,在多平台上可能会出现问题。所以才有了SWING组件。我想,JFILECHOOSER本身不能读取文件图标可能就是跨平台做出的一种牺牲。但我想,有没有什么方法,能让JFILECHOOSER读取本地的文件系统,从而能够显示默认图标。
我想问,大家以前在做项目时,有没有类似的现象,如果有,是怎么解决的。如果没有解决,那客户允许这样的文件选取器吗?
我想问,大家以前在做项目时,有没有类似的现象,如果有,是怎么解决的。如果没有解决,那客户允许这样的文件选取器吗?
#3
再说一句,我觉得java.awt.FileDialog 是可以跨平台的,只不过是AWT的对等组件的体系结构在绘制窗口时调用的是本地的用户界面组件。而不是在容器中自己绘制。不过,这样的话,在多个平台上是窗体否能表现一致就很值得怀疑。不过,我仅仅用的是FILEDIALGO。所以,FILEDIALOG是否在多平台上没有问题,就需要高手们来解答了。
#4
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class ZipTest extends JFrame implements ActionListener
{
private JComboBox fileList=new JComboBox();
private JTextArea fileText=new JTextArea();
private JScrollPane pane;
private JMenuItem openItem,exitItem;
private String zipname;
public ZipTest()
{
setTitle("ZipTest");
setSize(300,400);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JMenuBar mbar=new JMenuBar();
JMenu m=new JMenu("File");
m.setMnemonic('F');
openItem=new JMenuItem("Open",'O');
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
openItem.addActionListener(this);
m.add(openItem);
exitItem=new JMenuItem("eXit",'X');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
exitItem.addActionListener(this);
m.add(exitItem);
mbar.add(m);
fileList.addActionListener(this);
Container c=getContentPane();
c.add(mbar,"North");
c.add(fileList,"South");
//////////////////////////////////////////////////////////////////
fileText.setEditable(false);//设置为只读属性
pane=new JScrollPane(fileText);//使textarea可以有滚动条
c.add(pane,"Center");
///////////////////////////////////////////////////////////////////////
//c.add(fileText,"Center");
//show();
}
public void actionPerformed(ActionEvent evt)
{
Object source=evt.getSource();
if(source==openItem)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".zip")||f.isDirectory();
}
public String getDescription()
{
return "ZIP FILES";
}
});
int r=chooser.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
zipname=chooser.getSelectedFile().getPath();
scanZipFile();
}
}
else if(source==exitItem) System.exit(0);
else if(source==fileList)
loadZipFile((String)fileList.getSelectedItem());
}
public void scanZipFile()
{
fileList.removeAllItems();
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null)
{
fileList.addItem(entry.getName());
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public void loadZipFile(String name)
{
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
fileText.setText("");
while((entry=zin.getNextEntry())!=null)
{
if(entry.getName().equals(name))
{
BufferedReader in=new BufferedReader(new InputStreamReader(zin));
String s;
while((s=in.readLine())!=null)
fileText.append(s+"\n");
}
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public static void main(String args[])
{
Frame f=new ZipTest();
f.show();
}
}
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.*;
import javax.swing.filechooser.FileFilter;
public class ZipTest extends JFrame implements ActionListener
{
private JComboBox fileList=new JComboBox();
private JTextArea fileText=new JTextArea();
private JScrollPane pane;
private JMenuItem openItem,exitItem;
private String zipname;
public ZipTest()
{
setTitle("ZipTest");
setSize(300,400);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
JMenuBar mbar=new JMenuBar();
JMenu m=new JMenu("File");
m.setMnemonic('F');
openItem=new JMenuItem("Open",'O');
openItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));
openItem.addActionListener(this);
m.add(openItem);
exitItem=new JMenuItem("eXit",'X');
exitItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));
exitItem.addActionListener(this);
m.add(exitItem);
mbar.add(m);
fileList.addActionListener(this);
Container c=getContentPane();
c.add(mbar,"North");
c.add(fileList,"South");
//////////////////////////////////////////////////////////////////
fileText.setEditable(false);//设置为只读属性
pane=new JScrollPane(fileText);//使textarea可以有滚动条
c.add(pane,"Center");
///////////////////////////////////////////////////////////////////////
//c.add(fileText,"Center");
//show();
}
public void actionPerformed(ActionEvent evt)
{
Object source=evt.getSource();
if(source==openItem)
{
JFileChooser chooser=new JFileChooser();
chooser.setCurrentDirectory(new File("."));
chooser.setFileFilter(new FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".zip")||f.isDirectory();
}
public String getDescription()
{
return "ZIP FILES";
}
});
int r=chooser.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
zipname=chooser.getSelectedFile().getPath();
scanZipFile();
}
}
else if(source==exitItem) System.exit(0);
else if(source==fileList)
loadZipFile((String)fileList.getSelectedItem());
}
public void scanZipFile()
{
fileList.removeAllItems();
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
while((entry=zin.getNextEntry())!=null)
{
fileList.addItem(entry.getName());
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public void loadZipFile(String name)
{
try
{
ZipInputStream zin=new ZipInputStream(new FileInputStream(zipname));
ZipEntry entry;
fileText.setText("");
while((entry=zin.getNextEntry())!=null)
{
if(entry.getName().equals(name))
{
BufferedReader in=new BufferedReader(new InputStreamReader(zin));
String s;
while((s=in.readLine())!=null)
fileText.append(s+"\n");
}
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{}
}
public static void main(String args[])
{
Frame f=new ZipTest();
f.show();
}
}
#5
to:
jeston
你这里有点象的就是 int r=chooser.showOpenDialog(this);
不过,THIS我也用过了,不行。你的这段代码我也调试了,也不行,你能显示系统对应的文件图标吗?
jeston
你这里有点象的就是 int r=chooser.showOpenDialog(this);
不过,THIS我也用过了,不行。你的这段代码我也调试了,也不行,你能显示系统对应的文件图标吗?
#6
我这里完全可以呀。
#7
我装的是jdk1.3
#8
用MVC控制一下
可以使用自己定义的图标
可以使用自己定义的图标
#9
怪呀
我用的是JBUILDER 4。0。也是java 1.3.0-C。怎么就没有呢?
我用的是JBUILDER 4。0。也是java 1.3.0-C。怎么就没有呢?