因为具体程序不清楚什么也没有猜想是不是setlayout的问题。
给你一个源程序参考一下。// Java core packages
import java.awt.*;
import java.awt.event.*;// Java extension packages
import javax.swing.*;public class SelfContainedPanel extends JPanel {
private int x1, y1, x2, y2; // set up mouse event handling for SelfContainedPanel
public SelfContainedPanel()
{
// set up mouse listener
addMouseListener( // anonymous inner class for mouse pressed and
// released event handling
new MouseAdapter() { // handle mouse press event
public void mousePressed( MouseEvent event )
{
x1 = event.getX();
y1 = event.getY();
} // handle mouse release event
public void mouseReleased( MouseEvent event )
{
x2 = event.getX();
y2 = event.getY();
repaint();
} } // end anonymous inner class ); // end call to addMouseListener // set up mouse motion listener
addMouseMotionListener( // anonymous inner class to handle mouse drag events
new MouseMotionAdapter() {
// handle mouse drag event
public void mouseDragged( MouseEvent event )
{
x2 = event.getX();
y2 = event.getY();
repaint();
} } // end anonymous inner class ); // end call to addMouseMotionListener } // end constructor // return preferred width and height of SelfContainedPanel
public Dimension getPreferredSize()
{
return new Dimension( 150, 100 );
} // paint an oval at the specified coordinates
public void paintComponent( Graphics g )
{
super.paintComponent( g ); g.drawOval( Math.min( x1, x2 ), Math.min( y1, y2 ),
Math.abs( x1 - x2 ), Math.abs( y1 - y2 ) );
}} // end class SelfContainedPanelimport java.awt.*;
import java.awt.event.*;// Java extension packages
import javax.swing.*;// Deitel packages
import SelfContainedPanel;public class SelfContainedPanelTest extends JFrame {
private SelfContainedPanel myPanel;
// set up GUI and mouse motion event handlers for
// application window
public SelfContainedPanelTest()
{
// set up a SelfContainedPanel
myPanel = new SelfContainedPanel();
myPanel.setBackground( Color.yellow ); Container container = getContentPane();
container.setLayout( new FlowLayout() );
container.add( myPanel ); // set up mouse motion event handling
addMouseMotionListener( // anonymous inner class for mouse motion event handling
new MouseMotionListener() { // handle mouse drag event
public void mouseDragged( MouseEvent event )
{
setTitle( "Dragging: x=" + event.getX() +
"; y=" + event.getY() );
} // handle mouse move event
public void mouseMoved( MouseEvent event )
{
setTitle( "Moving: x=" + event.getX() +
"; y=" + event.getY() );
} } // end anonymous inner class ); // end call to addMouseMotionListener setSize( 300, 200 );
setVisible( true );
} // execute application
public static void main( String args[] )
{
SelfContainedPanelTest application =
new SelfContainedPanelTest(); application.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE );
}} // end class SelfContainedPanelTest
给你一个源程序参考一下。// Java core packages
import java.awt.*;
import java.awt.event.*;// Java extension packages
import javax.swing.*;public class SelfContainedPanel extends JPanel {
private int x1, y1, x2, y2; // set up mouse event handling for SelfContainedPanel
public SelfContainedPanel()
{
// set up mouse listener
addMouseListener( // anonymous inner class for mouse pressed and
// released event handling
new MouseAdapter() { // handle mouse press event
public void mousePressed( MouseEvent event )
{
x1 = event.getX();
y1 = event.getY();
} // handle mouse release event
public void mouseReleased( MouseEvent event )
{
x2 = event.getX();
y2 = event.getY();
repaint();
} } // end anonymous inner class ); // end call to addMouseListener // set up mouse motion listener
addMouseMotionListener( // anonymous inner class to handle mouse drag events
new MouseMotionAdapter() {
// handle mouse drag event
public void mouseDragged( MouseEvent event )
{
x2 = event.getX();
y2 = event.getY();
repaint();
} } // end anonymous inner class ); // end call to addMouseMotionListener } // end constructor // return preferred width and height of SelfContainedPanel
public Dimension getPreferredSize()
{
return new Dimension( 150, 100 );
} // paint an oval at the specified coordinates
public void paintComponent( Graphics g )
{
super.paintComponent( g ); g.drawOval( Math.min( x1, x2 ), Math.min( y1, y2 ),
Math.abs( x1 - x2 ), Math.abs( y1 - y2 ) );
}} // end class SelfContainedPanelimport java.awt.*;
import java.awt.event.*;// Java extension packages
import javax.swing.*;// Deitel packages
import SelfContainedPanel;public class SelfContainedPanelTest extends JFrame {
private SelfContainedPanel myPanel;
// set up GUI and mouse motion event handlers for
// application window
public SelfContainedPanelTest()
{
// set up a SelfContainedPanel
myPanel = new SelfContainedPanel();
myPanel.setBackground( Color.yellow ); Container container = getContentPane();
container.setLayout( new FlowLayout() );
container.add( myPanel ); // set up mouse motion event handling
addMouseMotionListener( // anonymous inner class for mouse motion event handling
new MouseMotionListener() { // handle mouse drag event
public void mouseDragged( MouseEvent event )
{
setTitle( "Dragging: x=" + event.getX() +
"; y=" + event.getY() );
} // handle mouse move event
public void mouseMoved( MouseEvent event )
{
setTitle( "Moving: x=" + event.getX() +
"; y=" + event.getY() );
} } // end anonymous inner class ); // end call to addMouseMotionListener setSize( 300, 200 );
setVisible( true );
} // execute application
public static void main( String args[] )
{
SelfContainedPanelTest application =
new SelfContainedPanelTest(); application.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE );
}} // end class SelfContainedPanelTest
解决方案 »
- 求一道程序题,用java实现
- JDialog关闭后的焦点问题
- 新手关于事件派发线程问题,大家讨论^^
- 初学多线程,不解一问!
- 运行applet小应用程序时提示找不到相应的类
- MANIFEST.MF文件怎样写?它所在的META-INFO文件夹和jar文件是在同一个目录下吗?
- jsp乱码
- 一個簡單程式,請大俠相助
- 3请问如何同屏显示多内码?
- 关于JAVA压缩文件的传输问题
- 连接数据库时出错,java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc
- java2的运行环境为何设置不对?
或者用double buffering
第二个问题没遇到过,不过你最好用BufferedImage这个类做一下缓冲,画图在图像上画,然后在paint方法中显示这个BufferedImage,这样子会好点.