先谢谢各位大侠了!
前两个是超类定义,分别为DrawPanel, DrawFrame,具体如下:import java.awt.*;
import javax.swing.*;
public class DrawPanel extends JPanel{
private int width=300;
private int height=300;
protected DrawPanel(){
setPreferredSize(new Dimension(width,height));
}
protected DrawPanel(final int w,final int h){
width=w;
height=h;
setPreferredSize(new Dimension(width,height));
}
public int getWidth(){
return width;
}
public int getHeight(){
return height;
}
}
-------------------------------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawFrame extends JFrame{
public void add(final JPanel panel){
getContentPane().add(panel,BorderLayout.CENTER);
}
private void quit(){
System.exit(0);
}
public DrawFrame(final String title){
super(title);
Button quitButton=new Button("Quit");
quitButton.addActionListener(new ActionListener(){
public void actionPerformed(final ActionEvent e){
quit();
}
});
JPanel buttonPanel=new JPanel(new FlowLayout());
buttonPanel.add(quitButton);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
addWindowListener(new WindowAdapter(){
public void windowClosing(final WindowEvent evt){
quit();
}
});
}
public void centreOnScreen(){
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);
}
}
-------------------------------------------------------------------------
------------------------------------
import java.awt.*;
import java.awt.geom.*;
public class DrawLine extends DrawPanel{
public static void main(final String[] args){
DrawFrame frame=new DrawFrame("Drawing of a line");
DrawLine drawing=new DrawLine();
frame.add(drawing);
frame.pack();
frame.centreOnScreen();
frame.setVisible(true);
}
public DrawLine(){
}
public void paint(final Graphics g){
Graphics2D g2d=(Graphics2D)g;
Line2D aLine=new Line2D.Double(10,10,70,70);
g2d.draw(aLine);
}
前两个是超类定义,分别为DrawPanel, DrawFrame,具体如下:import java.awt.*;
import javax.swing.*;
public class DrawPanel extends JPanel{
private int width=300;
private int height=300;
protected DrawPanel(){
setPreferredSize(new Dimension(width,height));
}
protected DrawPanel(final int w,final int h){
width=w;
height=h;
setPreferredSize(new Dimension(width,height));
}
public int getWidth(){
return width;
}
public int getHeight(){
return height;
}
}
-------------------------------------------------------------------------------------------------------------
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DrawFrame extends JFrame{
public void add(final JPanel panel){
getContentPane().add(panel,BorderLayout.CENTER);
}
private void quit(){
System.exit(0);
}
public DrawFrame(final String title){
super(title);
Button quitButton=new Button("Quit");
quitButton.addActionListener(new ActionListener(){
public void actionPerformed(final ActionEvent e){
quit();
}
});
JPanel buttonPanel=new JPanel(new FlowLayout());
buttonPanel.add(quitButton);
getContentPane().setLayout(new BorderLayout());
getContentPane().add(buttonPanel, BorderLayout.SOUTH);
addWindowListener(new WindowAdapter(){
public void windowClosing(final WindowEvent evt){
quit();
}
});
}
public void centreOnScreen(){
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);
}
}
-------------------------------------------------------------------------
------------------------------------
import java.awt.*;
import java.awt.geom.*;
public class DrawLine extends DrawPanel{
public static void main(final String[] args){
DrawFrame frame=new DrawFrame("Drawing of a line");
DrawLine drawing=new DrawLine();
frame.add(drawing);
frame.pack();
frame.centreOnScreen();
frame.setVisible(true);
}
public DrawLine(){
}
public void paint(final Graphics g){
Graphics2D g2d=(Graphics2D)g;
Line2D aLine=new Line2D.Double(10,10,70,70);
g2d.draw(aLine);
}
当第一次显示组件,或组件部分可见,或显示器需要刷新时调用此方法.