我写了一个类
import javax.swing.*;
import java.awt.*;
public class CFrame extends JFrame{
public CFrame(final String title){
super(title);
}
public void centerOnScreen(){
Dimension displaySize=getToolkit().getScreenSize();
Dimension windowSize=getSize();
int x=(displaySize.width-windowSize.width)/2;
int y=(displaySize.height-windowSize.height)/2;
if(x<0) {
x=0;
}
if(y<0){
y=0;
}
setLocation(x,y);
}
}但是发现其中Dimension windowSize=getSize();没有起作用,windowSize.width和windowSize.height都是0,JFrame对象只是其左上角在screen中央,怎么回事啊?????
还有没有什么其他方法可以获得JFrame对象的size????????
这是测试类
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class TryCFrame extends JFrame{
public static void main(String[] args){
CFrame fr=new CFrame("Try");
fr.centerOnScreen();
fr.setResizable(false);
fr.setSize(230,280);
fr.setVisible(true);
fr.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
import javax.swing.*;
import java.awt.*;
public class CFrame extends JFrame{
public CFrame(final String title){
super(title);
}
public void centerOnScreen(){
Dimension displaySize=getToolkit().getScreenSize();
Dimension windowSize=getSize();
int x=(displaySize.width-windowSize.width)/2;
int y=(displaySize.height-windowSize.height)/2;
if(x<0) {
x=0;
}
if(y<0){
y=0;
}
setLocation(x,y);
}
}但是发现其中Dimension windowSize=getSize();没有起作用,windowSize.width和windowSize.height都是0,JFrame对象只是其左上角在screen中央,怎么回事啊?????
还有没有什么其他方法可以获得JFrame对象的size????????
这是测试类
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
public class TryCFrame extends JFrame{
public static void main(String[] args){
CFrame fr=new CFrame("Try");
fr.centerOnScreen();
fr.setResizable(false);
fr.setSize(230,280);
fr.setVisible(true);
fr.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
import javax.swing.*;
import java.awt.*;
public class CFrame extends JFrame{
public CFrame(final String title){
super(title);
}
}
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.*;
import java.awt.*;
public class TryCFrame extends JFrame{
public static void main(String[] args){
CFrame fr=new CFrame("Try");
fr.setResizable(false);
fr.setSize(230,280);
Dimension displaySize=fr.getToolkit().getScreenSize();
Dimension windowSize= fr.getSize();
int x=(displaySize.width-windowSize.width)/2;
int y=(displaySize.height-windowSize.height)/2;
if(x<0) {
x=0;
}
if(y<0){
y=0;
}
fr.setLocation(x,y); fr.setVisible(true);
fr.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
}
import javax.swing.*;
import java.awt.*;
public class CFrame extends JFrame{
public CFrame(final String title){
super(title);
}
}
就没有用了,我如果很多类都要centerOnScreen的话就要在每个类中写方法,而我是想写一个centerOnScreen类,以后直接调用就行了。