1

これが下側と右側をレンダリングしないのはなぜですか。どうすれば修正できますか?何も描画されない小さな白い領域がありますか? これには簡単な修正があると確信していますが、私はあまりにも愚かです。

必要のないものはすべて取り除きましたが、ランダムで役に立たないコードがまだ残っている可能性があります。

package test;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test extends JPanel implements Runnable
{
    /**
     * Default serial version
     */
    private static final long serialVersionUID = 1L;


    private static final int WIN_WIDTH = 760;
    private static final int WIN_HEIGHT = 480;

    private boolean running;
    private Thread thread;
    public Graphics g;
    public Graphics2D g2d;
    static final int UPDATE_RATE = 60;
    static final long UPDATE_PERIOD = 1000000000L / UPDATE_RATE;

    static public final int EONWIDTH = 24;
    static public final int EONHEIGHT = 24;

    /**
     * Contains a list of Eon instances by their instance ID.
     */

    ///////////////////////////////////CONSTRUCTER/////////////////////////////
    public Test()
    {
        Dimension size = new Dimension(WIN_WIDTH, WIN_HEIGHT);
        setPreferredSize(size);
        setMinimumSize(size);
        setMaximumSize(size);       
    }

    /**
     * Main java runnable, required
     * @param args Unused, required by default
     */
    public static void main(String[] args)
    {
        Test game = new Test();

        JFrame frame = new JFrame("See guys, It's off centered... - 00.00.10");
        JPanel panel = new JPanel(new BorderLayout());
        panel.add(game, BorderLayout.CENTER);
        frame.setContentPane(panel);
        frame.pack();
        frame.isFocusable();
        frame.setFocusable(true);
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

        game.g = game.getGraphics();

        game.start(game);
    }


    private void loopUpdate(Test game)
    {
            game.repaint();
    }

    boolean done = true;
    public void paint(Graphics g)
    { 
        System.out.print(g.getClipBounds().width + ", " + g.getClipBounds().height + "\n");
        super.paint(g);
        g.setClip(0,0, WIN_WIDTH, WIN_HEIGHT);
        final Graphics2D g2d = (Graphics2D) g;
        if (done) 
        {
            done=false;

            try
            {

        g2d.fillRect(0, 0, WIN_WIDTH + 100, WIN_HEIGHT + 100);


        } catch (Exception e) {
                e.printStackTrace();
            }
            g.dispose();
            done = true;
    }
    }

    @Override
    public void run()
    {
        loopUpdate(this);
    }
}

これが出力です

お願いします。ここにいるほとんどの人がこれを修正する方法を知っているので、誰か助けてください。

4

1 に答える 1