gpt4 book ai didi

java - 无法将面板添加到 Miglayout

转载 作者:行者123 更新时间:2023-12-01 14:53:20 25 4
gpt4 key购买 nike

我有一个扩展类 JComponent 的类,我在其中创建一个带有数字的组件。我想使用 MigLayout 在框架中添加此类对象,但组件没有添加,我只能看到空框架。感谢您的帮助。

用图形创建组件的类

public class DrawPictures extends JComponent
{
static
{
flagLeft = true;
flagLeft = true;
flagforfoot = true;
}

public void setStringForMoveBall(String string)
{
stringForMoveBall = string;
}

public String getStringForMoveBall ()
{
return stringForMoveBall;
}

public DrawPictures()
{
changeColorBall = 0;
stringForMoveBall = "";
this.offset = 8;
marginBetweenRectangles = 70;
height = radiusWidth = 50;
top = radiusHeight = 30;
width = 60;
left = 20;
this.counter = 11;
rectangles = new LinkedList<RoundRectangle2D>();
ball = new Ellipse2D.Double( 400,570,top, top );
FullCollection(rectangles);
pusherFoot = new RoundRectangle2D.Double( 350, 600, 150, 50,radiusWidth,radiusHeight );

timerForBall = new Timer(40, new ActionListener() {

@Override
public void actionPerformed(ActionEvent e)
{
repaint();
}
} );
timerForBall.start();
}

private void DrawRectangles( Graphics2D drawer )
{
if( flagforfoot )
{
//flagforfoot = false;
for( int i = 0; i != rectangles.size(); ++i )
{
if ( i % 4 == 0)
{
drawer.setColor( Color.RED );
drawer.fill(rectangles.get(i));
}
else if ( i % 3 == 0)
{
drawer.setColor( Color.CYAN );
drawer.fill(rectangles.get(i));
}
else if ( i % 5 == 0)
{
drawer.setColor( Color.YELLOW );
drawer.fill(rectangles.get(i));
}
else if ( i % 7 == 0)
{
drawer.setColor( Color.WHITE );
drawer.fill(rectangles.get(i));
}
else if ( i % 8 == 0)
{
drawer.setColor( Color.MAGENTA );
drawer.fill(rectangles.get(i));
}
else if ( i % 9 == 0)
{
drawer.setColor( Color.GREEN );
drawer.fill(rectangles.get(i));
}

else
{
drawer.setColor( Color.PINK );
drawer.fill(rectangles.get(i));
}
}
}
}

@Override protected void paintComponent( Graphics graphics )
{
super.paintComponent(graphics);
drawer = (Graphics2D)graphics;
DrawRectangles(drawer);
drawer.setColor(Color.YELLOW);
drawer.fill(pusherFoot);
MoveFootRectangle(pusherFoot);
drawer.setColor(Color.GREEN);
drawer.fill(ball);
MoveBall( );

}

private void CheckHitBallWithRectangles( )
{
for( int i = rectangles.size() - 1; i > 0; --i )
{
if( ball.getMinY() >= rectangles.get(i).getMinY() &&
ball.getMinY() <= rectangles.get(i).getMaxY() &&
ball.getMaxX() >= rectangles.get(i).getMinX() &&
ball.getMaxX() <= rectangles.get(i).getMaxX() )
{
if ( CompareStringsForMoveBall("") )
{
stringForMoveBall = "DownAndLeftFromTopSide";
rectangles.remove(i);
rectangles.add(i,new RoundRectangle2D.Double(0,0,0,0,0,0));
//--i;
}
if( CompareStringsForMoveBall("UpAndRightFromLeftSide") )
{
stringForMoveBall = "DownAndRightFromTopSide";
rectangles.remove(i);
//--i;
rectangles.add(i,new RoundRectangle2D.Double(0,0,0,0,0,0));
}
}
if( ball.getMinY() >= rectangles.get(i).getMinY() &&
ball.getMinY() <= rectangles.get(i).getMaxY() &&
ball.getMinX() >= rectangles.get(i).getMinX() &&
ball.getMinX() <= rectangles.get(i).getMaxX())
{
if ( CompareStringsForMoveBall("") )
{
stringForMoveBall = "DownAndLeftFromTopSide";
rectangles.remove(i);
//--i;
rectangles.add(i,new RoundRectangle2D.Double(0,0,0,0,0,0));
}
}

if ( ball.getMaxY() >= rectangles.get(i).getMinY() &&
ball.getMaxY() <= rectangles.get(i).getMaxY() &&
ball.getMaxX() >= rectangles.get(i).getMinX() &&
ball.getMaxX() <= rectangles.get(i).getMaxX())
{
if( CompareStringsForMoveBall("DownAndRightFromTopSide") )
{
stringForMoveBall = "DownAndLeftFromTopSide";
rectangles.remove(i);
rectangles.add(i,new RoundRectangle2D.Double(0,0,0,0,0,0));
//--i;
}
if( CompareStringsForMoveBall("UpAndRightFromLeftSide") )
{
stringForMoveBall = "DownAndRightFromTopSide";
rectangles.remove(i);
//--i;
rectangles.add(i,new RoundRectangle2D.Double(0,0,0,0,0,0));
}
}
if ( ball.getMinX() >= rectangles.get(i).getMinX() &&
ball.getMinX() <= rectangles.get(i).getMaxX()&&
ball.getMinY() >= rectangles.get(i).getMinY() &&
ball.getMinY() <= rectangles.get(i).getMaxY())
{
rectangles.remove(i);
//--i;
rectangles.add(i,new RoundRectangle2D.Double(0,0,0,0,0,0));
}
//System.out.println(rectangles.size());
}
}
public void MoveFootRectangle(RoundRectangle2D pusher)
{

if( flagLeft && pusher.getX() >= 0)
{

pusher.setFrame(pusher.getX() - 30, pusher.getY(), 150, 60);
flagLeft = false;
}
if( flagRight && pusher.getX() <= 730 )
{
pusher.setFrame(pusher.getX() + 30, pusher.getY(), 150, 60);
flagRight = false;
}

}

public static void SetStatusFlagLeft( )
{
flagLeft = true;
}
public static void SetStatusFlagRight( )
{
flagRight = true;
}
private void MoveBallYLessNull( )
{
if( CompareStringsForMoveBall( "" ) )
{
stringForMoveBall = "DownAndLeftFromTopSide";
}
else if( CompareStringsForMoveBall( "UpAndRightFromLeftSide" ) )
{
stringForMoveBall = "DownAndRightFromTopSide";
}
}
private void MoveBallXLessNull( )
{
if ( CompareStringsForMoveBall( "DownAndLeftFromTopSide" ) )
{
stringForMoveBall = "DownAndRightFromTopSide";
}
else if( stringForMoveBall.compareTo( "" ) == 0 )
{
stringForMoveBall = "UpAndRightFromLeftSide";
}
}

private void MoveBall()
{
if ( CompareStringsForMoveBall( "" ) )
{
ball.setFrame(ball.getX() - offset, ball.getY() - offset, top, top);
}
if ( CompareStringsForMoveBall( "DownAndLeftFromTopSide" ) )
{
ball.setFrame(ball.getX() - offset, ball.getY() + offset, top, top);
}

if( ball.getX() < 0 )
{
MoveBallXLessNull();
}
if( ball.getY() < 0 )
{
MoveBallYLessNull();
}
if ( CompareStringsForMoveBall( "UpAndRightFromLeftSide" ) )
{
ball.setFrame(ball.getX() + offset, ball.getY() - offset, top, top );
}

if ( CompareStringsForMoveBall( "DownAndRightFromTopSide" ) )
{
ball.setFrame(ball.getX() + offset, ball.getY() + offset, top, top);
}

if ( ball.getMaxY() == pusherFoot.getMinY() &&
ball.getCenterX() > pusherFoot.getMinX()
&& ball.getCenterX() < pusherFoot.getMaxX() )
{
MoveBallHitWithFoot();
}

if( ball.getMaxX() > 880)
{
MoveBallForXMoreWidth();
}

CheckHitBallWithRectangles();
}

public void MoveBallForXMoreWidth( )
{
if ( CompareStringsForMoveBall( "DownAndRightFromTopSide" ) )
{
setStringForMoveBall("DownAndLeftFromTopSide");
}
else if( CompareStringsForMoveBall( "UpAndRightFromLeftSide" ) )
{
setStringForMoveBall("");
}
}

public void MoveBallHitWithFoot( )
{
if ( CompareStringsForMoveBall( "DownAndRightFromTopSide" ) )
{
setStringForMoveBall("UpAndRightFromLeftSide") ;
}
else if ( CompareStringsForMoveBall( "DownAndLeftFromTopSide" ) )
{
setStringForMoveBall("");
}
}
public boolean CompareStringsForMoveBall( String moveforball )
{
if ( (getStringForMoveBall()).compareTo(moveforball) == 0 )
{
return true;
}
else
{
return false;
}
}

private void FullCollection(LinkedList<RoundRectangle2D> newrectangles)
{
int counterTop = 0;

for( int i = 0; i <= counter; ++i )
{
newrectangles.add(new RoundRectangle2D.Double
( top + counterTop,left,width,height,radiusWidth,radiusHeight ));
counterTop += marginBetweenRectangles;
}

counterTop = 0;

for( int i = 0; i <= counter; ++i )
{
newrectangles.add(new RoundRectangle2D.Double
( top + counterTop,left + marginBetweenRectangles,width,height,radiusWidth,radiusHeight ));
counterTop += marginBetweenRectangles;
}

counterTop = 0;

for( int i = 0; i <= counter; ++i )
{
newrectangles.add(new RoundRectangle2D.Double
( top + counterTop,left + marginBetweenRectangles * 2,width,height,radiusWidth,radiusHeight ));
counterTop += marginBetweenRectangles;
}

}
private LinkedList<RoundRectangle2D> rectangles;
private Ellipse2D ball;
private int width,left,top,height, counter,radiusWidth,
radiusHeight,marginBetweenRectangles,offset,changeColorBall;
private RoundRectangle2D pusherFoot;
private Timer timerForBall;
private static boolean flagLeft,flagRight, flagforfoot;
private String stringForMoveBall;
private Graphics2D drawer;


}

创建对象类 DrawPictures 并尝试添加到框架中的类

public class FrameForGame extends JFrame  
{
public FrameForGame()
{
super("MyGame");
setDefaultCloseOperation(EXIT_ON_CLOSE);

setLayout(new MigLayout());

setSize(WIDTH_H, HEIGHT_H);
setLocation(150, 50);
event = new ForEvents();
addKeyListener(event);
add(new DrawPictures());
setVisible(true);
}
private int WIDTH_H = 900;
private int HEIGHT_H = 700;
private ForEvents event;
private JPanel panel;


}

具有 Main 方法的类

public class MyGame {

public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {

@Override
public void run()
{
FrameForGame frameForGame = new FrameForGame();
}
});
}
}

最佳答案

关于java - 无法将面板添加到 Miglayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14589189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com