12 个解决方案
#1
setLocation
public void setLocation(int x,int y)
public void setLocation(int x,int y)
#2
用了那个方法,但是没有作用。
#3
调一下setLocationRelativeTo试试看,参数用父窗口。
#4
用DefaultToolkit
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
然后可以 setBounds((screenSize.width-宽度)/2, (screenSize.height-高度)/2, 宽度, 高度);
试试看吧!
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
然后可以 setBounds((screenSize.width-宽度)/2, (screenSize.height-高度)/2, 宽度, 高度);
试试看吧!
#5
上面这些都式过了,没有用,一样不好用,不知道是不是Java的bug
#6
up
#7
我一般文件对话框都显示在你的父类组件的正上方啊,怎么会跑到左上角去呢
#8
楼上的朋友能提供一下代码吗?
我去sun的网站看过,也有这样的问题不过也没有结决。而且说这不是jdk的bug。不知道对策了。
我去sun的网站看过,也有这样的问题不过也没有结决。而且说这不是jdk的bug。不知道对策了。
#9
你创建FileDialog对象的时候,有没有明确指定他们父窗口是谁?然后在显求出来之前有没有调用一下setLocationRelativeTo?
#10
现在你可以用不FileDialog了,可以用javax.swing.JFileChooser,它比FileDialog功能更强大
#11
楼主看看我的试试: 一个文件分割程序 点 打开 可以有 FileDialog
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Fen{
String fileName;
int size;
public Fen(String fileName,String size){
this.fileName = fileName;
this.size = Integer.parseInt(size)*1024;
}
public void cut()throws Exception{
int maxx = 0;
File inFile = new File(fileName);
int fileLength = (int)inFile.length(); //取得文件的大小
int value; //取得要分割的个数
RandomAccessFile inn = new RandomAccessFile(inFile,"r");//打开要分割的文件
value = fileLength/size;
int i=0;
int j=0;
//根据要分割的数目输出文件
for (;j<value;j++){
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
maxx+=size;
for (;i<maxx;i++){
outt.write(inn.read());
}
outt.close();
}
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
for(;i<fileLength;i++){
outt.write(inn.read());
}
outt.close();
inn.close();
}
}
class He{
String fileName;
String filterName;
He(String fileName,String filterName){
this.fileName = fileName;
this.filterName = filterName;
}
public void unite()throws Exception{
String [] tt;
File inFile = new File("."); //在当前目录下的文件
File outFile = new File(fileName); //取得输出名
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
//取得符合条件的文件名
tt = inFile.list(new FilenameFilter(){
public boolean accept(File dir,String name){
String rr = new File(name).toString();
return rr.endsWith(filterName);
}
});
//打印出取得的文件名
for (int i = 0;i<tt.length;i++){
System.out.println(tt[i]);
}
//打开所有的文件再写入到一个文件里
for(int i=0;i<tt.length;i++){
inFile = new File(tt[i]);
RandomAccessFile inn= new RandomAccessFile(inFile,"r");
int c;
while((c=inn.read())!=-1)
outt.write(c);
}
outt.close();
}
}
public class fenge extends JFrame implements ActionListener
{
Fen cutt;
He hee;
int size;
String finalfilename;
String sameend;
File myfile;
JPanel jp1;
JPanel jp2;
JLabel jl1;
JTextField jt;
JButton btn_1 ;
JLabel jl2;
JTextField jt1;
JButton btn_2;
JLabel jl3;
JTextField jt2;
JLabel jl4;
JTextField jt3;
JButton btn_3;
fenge()
{
super("文件分割器");
setLayout(new GridLayout(2,1));
jp1=new JPanel(new FlowLayout());
jp2=new JPanel(new FlowLayout());
jl1=new JLabel("请选择要分割的文件");
jt=new JTextField(10);
btn_1=new JButton("打开");
jl2=new JLabel("请输入分割后每个文件大小(k)");
jt1=new JTextField(4);
btn_2=new JButton("开始分割");
jl3=new JLabel("请输入合并后的文件名:");
jt2=new JTextField(10);
jl4=new JLabel("请输入要合并文件的同样后缀名");
jt3=new JTextField(10);
btn_3=new JButton("开始合并");
jp1.add(jl1);
jp1.add(jt);
jp1.add(btn_1);
jp1.add(jl2);
jp1.add(jt1);
jp1.add(btn_2);
jp2.add(jl3);
jp2.add(jt2);
jp2.add(jl4);
jp2.add(jt3);
jp2.add(btn_3);
getContentPane().add(jp1);
getContentPane().add(jp2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,400);
setLocation(100,100);
btn_1.addActionListener(this);
btn_2.addActionListener(this);
btn_3.addActionListener(this);
show();
}
public static void main(final String [] args){
fenge fg=new fenge();
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="打开")
{
FileDialog fd=new FileDialog(this,"打开文件",FileDialog.LOAD);
fd.show();
jt.setText(fd.getFile());
myfile=new File(fd.getDirectory()+fd.getFile());
}
else if(e.getActionCommand()=="开始分割")
{
size=Integer.parseInt(jt1.getText());
cutt=new Fen(myfile.toString(),""+size);
try{
cutt.cut();
}catch(Exception ie){System.out.println(ie);}
}
else if(e.getActionCommand()=="开始合并")
{
finalfilename=jt2.getText();
sameend=jt3.getText();
try{
He hee = new He(finalfilename,sameend);
hee.unite();
}catch(Exception ie){System.out.println(ie);}
}
}
}
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Fen{
String fileName;
int size;
public Fen(String fileName,String size){
this.fileName = fileName;
this.size = Integer.parseInt(size)*1024;
}
public void cut()throws Exception{
int maxx = 0;
File inFile = new File(fileName);
int fileLength = (int)inFile.length(); //取得文件的大小
int value; //取得要分割的个数
RandomAccessFile inn = new RandomAccessFile(inFile,"r");//打开要分割的文件
value = fileLength/size;
int i=0;
int j=0;
//根据要分割的数目输出文件
for (;j<value;j++){
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
maxx+=size;
for (;i<maxx;i++){
outt.write(inn.read());
}
outt.close();
}
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
for(;i<fileLength;i++){
outt.write(inn.read());
}
outt.close();
inn.close();
}
}
class He{
String fileName;
String filterName;
He(String fileName,String filterName){
this.fileName = fileName;
this.filterName = filterName;
}
public void unite()throws Exception{
String [] tt;
File inFile = new File("."); //在当前目录下的文件
File outFile = new File(fileName); //取得输出名
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
//取得符合条件的文件名
tt = inFile.list(new FilenameFilter(){
public boolean accept(File dir,String name){
String rr = new File(name).toString();
return rr.endsWith(filterName);
}
});
//打印出取得的文件名
for (int i = 0;i<tt.length;i++){
System.out.println(tt[i]);
}
//打开所有的文件再写入到一个文件里
for(int i=0;i<tt.length;i++){
inFile = new File(tt[i]);
RandomAccessFile inn= new RandomAccessFile(inFile,"r");
int c;
while((c=inn.read())!=-1)
outt.write(c);
}
outt.close();
}
}
public class fenge extends JFrame implements ActionListener
{
Fen cutt;
He hee;
int size;
String finalfilename;
String sameend;
File myfile;
JPanel jp1;
JPanel jp2;
JLabel jl1;
JTextField jt;
JButton btn_1 ;
JLabel jl2;
JTextField jt1;
JButton btn_2;
JLabel jl3;
JTextField jt2;
JLabel jl4;
JTextField jt3;
JButton btn_3;
fenge()
{
super("文件分割器");
setLayout(new GridLayout(2,1));
jp1=new JPanel(new FlowLayout());
jp2=new JPanel(new FlowLayout());
jl1=new JLabel("请选择要分割的文件");
jt=new JTextField(10);
btn_1=new JButton("打开");
jl2=new JLabel("请输入分割后每个文件大小(k)");
jt1=new JTextField(4);
btn_2=new JButton("开始分割");
jl3=new JLabel("请输入合并后的文件名:");
jt2=new JTextField(10);
jl4=new JLabel("请输入要合并文件的同样后缀名");
jt3=new JTextField(10);
btn_3=new JButton("开始合并");
jp1.add(jl1);
jp1.add(jt);
jp1.add(btn_1);
jp1.add(jl2);
jp1.add(jt1);
jp1.add(btn_2);
jp2.add(jl3);
jp2.add(jt2);
jp2.add(jl4);
jp2.add(jt3);
jp2.add(btn_3);
getContentPane().add(jp1);
getContentPane().add(jp2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,400);
setLocation(100,100);
btn_1.addActionListener(this);
btn_2.addActionListener(this);
btn_3.addActionListener(this);
show();
}
public static void main(final String [] args){
fenge fg=new fenge();
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="打开")
{
FileDialog fd=new FileDialog(this,"打开文件",FileDialog.LOAD);
fd.show();
jt.setText(fd.getFile());
myfile=new File(fd.getDirectory()+fd.getFile());
}
else if(e.getActionCommand()=="开始分割")
{
size=Integer.parseInt(jt1.getText());
cutt=new Fen(myfile.toString(),""+size);
try{
cutt.cut();
}catch(Exception ie){System.out.println(ie);}
}
else if(e.getActionCommand()=="开始合并")
{
finalfilename=jt2.getText();
sameend=jt3.getText();
try{
He hee = new He(finalfilename,sameend);
hee.unite();
}catch(Exception ie){System.out.println(ie);}
}
}
}
#12
楼上的朋友,谢谢你的代码,不过想象是一样的,还是显示在主窗体的左上角。
其他的朋友的说法我也都试验过了,但是都不行,大家可以自己试验一下,不管怎样
设置,都是显示在Parent的左上角。
我去sun的网站看了,说这个不是bug,不知道怎样设定才能定位FileDialog。
其他的朋友的说法我也都试验过了,但是都不行,大家可以自己试验一下,不管怎样
设置,都是显示在Parent的左上角。
我去sun的网站看了,说这个不是bug,不知道怎样设定才能定位FileDialog。
#1
setLocation
public void setLocation(int x,int y)
public void setLocation(int x,int y)
#2
用了那个方法,但是没有作用。
#3
调一下setLocationRelativeTo试试看,参数用父窗口。
#4
用DefaultToolkit
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
然后可以 setBounds((screenSize.width-宽度)/2, (screenSize.height-高度)/2, 宽度, 高度);
试试看吧!
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
然后可以 setBounds((screenSize.width-宽度)/2, (screenSize.height-高度)/2, 宽度, 高度);
试试看吧!
#5
上面这些都式过了,没有用,一样不好用,不知道是不是Java的bug
#6
up
#7
我一般文件对话框都显示在你的父类组件的正上方啊,怎么会跑到左上角去呢
#8
楼上的朋友能提供一下代码吗?
我去sun的网站看过,也有这样的问题不过也没有结决。而且说这不是jdk的bug。不知道对策了。
我去sun的网站看过,也有这样的问题不过也没有结决。而且说这不是jdk的bug。不知道对策了。
#9
你创建FileDialog对象的时候,有没有明确指定他们父窗口是谁?然后在显求出来之前有没有调用一下setLocationRelativeTo?
#10
现在你可以用不FileDialog了,可以用javax.swing.JFileChooser,它比FileDialog功能更强大
#11
楼主看看我的试试: 一个文件分割程序 点 打开 可以有 FileDialog
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Fen{
String fileName;
int size;
public Fen(String fileName,String size){
this.fileName = fileName;
this.size = Integer.parseInt(size)*1024;
}
public void cut()throws Exception{
int maxx = 0;
File inFile = new File(fileName);
int fileLength = (int)inFile.length(); //取得文件的大小
int value; //取得要分割的个数
RandomAccessFile inn = new RandomAccessFile(inFile,"r");//打开要分割的文件
value = fileLength/size;
int i=0;
int j=0;
//根据要分割的数目输出文件
for (;j<value;j++){
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
maxx+=size;
for (;i<maxx;i++){
outt.write(inn.read());
}
outt.close();
}
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
for(;i<fileLength;i++){
outt.write(inn.read());
}
outt.close();
inn.close();
}
}
class He{
String fileName;
String filterName;
He(String fileName,String filterName){
this.fileName = fileName;
this.filterName = filterName;
}
public void unite()throws Exception{
String [] tt;
File inFile = new File("."); //在当前目录下的文件
File outFile = new File(fileName); //取得输出名
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
//取得符合条件的文件名
tt = inFile.list(new FilenameFilter(){
public boolean accept(File dir,String name){
String rr = new File(name).toString();
return rr.endsWith(filterName);
}
});
//打印出取得的文件名
for (int i = 0;i<tt.length;i++){
System.out.println(tt[i]);
}
//打开所有的文件再写入到一个文件里
for(int i=0;i<tt.length;i++){
inFile = new File(tt[i]);
RandomAccessFile inn= new RandomAccessFile(inFile,"r");
int c;
while((c=inn.read())!=-1)
outt.write(c);
}
outt.close();
}
}
public class fenge extends JFrame implements ActionListener
{
Fen cutt;
He hee;
int size;
String finalfilename;
String sameend;
File myfile;
JPanel jp1;
JPanel jp2;
JLabel jl1;
JTextField jt;
JButton btn_1 ;
JLabel jl2;
JTextField jt1;
JButton btn_2;
JLabel jl3;
JTextField jt2;
JLabel jl4;
JTextField jt3;
JButton btn_3;
fenge()
{
super("文件分割器");
setLayout(new GridLayout(2,1));
jp1=new JPanel(new FlowLayout());
jp2=new JPanel(new FlowLayout());
jl1=new JLabel("请选择要分割的文件");
jt=new JTextField(10);
btn_1=new JButton("打开");
jl2=new JLabel("请输入分割后每个文件大小(k)");
jt1=new JTextField(4);
btn_2=new JButton("开始分割");
jl3=new JLabel("请输入合并后的文件名:");
jt2=new JTextField(10);
jl4=new JLabel("请输入要合并文件的同样后缀名");
jt3=new JTextField(10);
btn_3=new JButton("开始合并");
jp1.add(jl1);
jp1.add(jt);
jp1.add(btn_1);
jp1.add(jl2);
jp1.add(jt1);
jp1.add(btn_2);
jp2.add(jl3);
jp2.add(jt2);
jp2.add(jl4);
jp2.add(jt3);
jp2.add(btn_3);
getContentPane().add(jp1);
getContentPane().add(jp2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,400);
setLocation(100,100);
btn_1.addActionListener(this);
btn_2.addActionListener(this);
btn_3.addActionListener(this);
show();
}
public static void main(final String [] args){
fenge fg=new fenge();
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="打开")
{
FileDialog fd=new FileDialog(this,"打开文件",FileDialog.LOAD);
fd.show();
jt.setText(fd.getFile());
myfile=new File(fd.getDirectory()+fd.getFile());
}
else if(e.getActionCommand()=="开始分割")
{
size=Integer.parseInt(jt1.getText());
cutt=new Fen(myfile.toString(),""+size);
try{
cutt.cut();
}catch(Exception ie){System.out.println(ie);}
}
else if(e.getActionCommand()=="开始合并")
{
finalfilename=jt2.getText();
sameend=jt3.getText();
try{
He hee = new He(finalfilename,sameend);
hee.unite();
}catch(Exception ie){System.out.println(ie);}
}
}
}
import java.io.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class Fen{
String fileName;
int size;
public Fen(String fileName,String size){
this.fileName = fileName;
this.size = Integer.parseInt(size)*1024;
}
public void cut()throws Exception{
int maxx = 0;
File inFile = new File(fileName);
int fileLength = (int)inFile.length(); //取得文件的大小
int value; //取得要分割的个数
RandomAccessFile inn = new RandomAccessFile(inFile,"r");//打开要分割的文件
value = fileLength/size;
int i=0;
int j=0;
//根据要分割的数目输出文件
for (;j<value;j++){
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
maxx+=size;
for (;i<maxx;i++){
outt.write(inn.read());
}
outt.close();
}
File outFile = new File(inFile.getName()+j+"zzii");
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
for(;i<fileLength;i++){
outt.write(inn.read());
}
outt.close();
inn.close();
}
}
class He{
String fileName;
String filterName;
He(String fileName,String filterName){
this.fileName = fileName;
this.filterName = filterName;
}
public void unite()throws Exception{
String [] tt;
File inFile = new File("."); //在当前目录下的文件
File outFile = new File(fileName); //取得输出名
RandomAccessFile outt= new RandomAccessFile(outFile,"rw");
//取得符合条件的文件名
tt = inFile.list(new FilenameFilter(){
public boolean accept(File dir,String name){
String rr = new File(name).toString();
return rr.endsWith(filterName);
}
});
//打印出取得的文件名
for (int i = 0;i<tt.length;i++){
System.out.println(tt[i]);
}
//打开所有的文件再写入到一个文件里
for(int i=0;i<tt.length;i++){
inFile = new File(tt[i]);
RandomAccessFile inn= new RandomAccessFile(inFile,"r");
int c;
while((c=inn.read())!=-1)
outt.write(c);
}
outt.close();
}
}
public class fenge extends JFrame implements ActionListener
{
Fen cutt;
He hee;
int size;
String finalfilename;
String sameend;
File myfile;
JPanel jp1;
JPanel jp2;
JLabel jl1;
JTextField jt;
JButton btn_1 ;
JLabel jl2;
JTextField jt1;
JButton btn_2;
JLabel jl3;
JTextField jt2;
JLabel jl4;
JTextField jt3;
JButton btn_3;
fenge()
{
super("文件分割器");
setLayout(new GridLayout(2,1));
jp1=new JPanel(new FlowLayout());
jp2=new JPanel(new FlowLayout());
jl1=new JLabel("请选择要分割的文件");
jt=new JTextField(10);
btn_1=new JButton("打开");
jl2=new JLabel("请输入分割后每个文件大小(k)");
jt1=new JTextField(4);
btn_2=new JButton("开始分割");
jl3=new JLabel("请输入合并后的文件名:");
jt2=new JTextField(10);
jl4=new JLabel("请输入要合并文件的同样后缀名");
jt3=new JTextField(10);
btn_3=new JButton("开始合并");
jp1.add(jl1);
jp1.add(jt);
jp1.add(btn_1);
jp1.add(jl2);
jp1.add(jt1);
jp1.add(btn_2);
jp2.add(jl3);
jp2.add(jt2);
jp2.add(jl4);
jp2.add(jt3);
jp2.add(btn_3);
getContentPane().add(jp1);
getContentPane().add(jp2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(600,400);
setLocation(100,100);
btn_1.addActionListener(this);
btn_2.addActionListener(this);
btn_3.addActionListener(this);
show();
}
public static void main(final String [] args){
fenge fg=new fenge();
}
public void actionPerformed(ActionEvent e)
{
if(e.getActionCommand()=="打开")
{
FileDialog fd=new FileDialog(this,"打开文件",FileDialog.LOAD);
fd.show();
jt.setText(fd.getFile());
myfile=new File(fd.getDirectory()+fd.getFile());
}
else if(e.getActionCommand()=="开始分割")
{
size=Integer.parseInt(jt1.getText());
cutt=new Fen(myfile.toString(),""+size);
try{
cutt.cut();
}catch(Exception ie){System.out.println(ie);}
}
else if(e.getActionCommand()=="开始合并")
{
finalfilename=jt2.getText();
sameend=jt3.getText();
try{
He hee = new He(finalfilename,sameend);
hee.unite();
}catch(Exception ie){System.out.println(ie);}
}
}
}
#12
楼上的朋友,谢谢你的代码,不过想象是一样的,还是显示在主窗体的左上角。
其他的朋友的说法我也都试验过了,但是都不行,大家可以自己试验一下,不管怎样
设置,都是显示在Parent的左上角。
我去sun的网站看了,说这个不是bug,不知道怎样设定才能定位FileDialog。
其他的朋友的说法我也都试验过了,但是都不行,大家可以自己试验一下,不管怎样
设置,都是显示在Parent的左上角。
我去sun的网站看了,说这个不是bug,不知道怎样设定才能定位FileDialog。