странные проблемы с JFrame - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь переместить ящик в JFrame, перерисовывая его, но по какой-то причине я не могу понять, что он не будет работать. Я знаю, что это, вероятно, что-то действительно глупое, но вот мои уроки: (также извините за форматирование, это боль в заднице ...) Это дает мне ошибку в строке frame.add (квадратная).

import javax.swing.JFrame;
import javax.swing.WindowConstants;

public class Runner extends JFrame{

final static int FRAME_WIDTH = 1000;
final static int FRAME_HEIGHT = 600;
final static int BOX_WIDTH = 50;
final static int BOX_HEIGHT = 50;

public static void main (String[] args){

    JFrame frame = new JFrame();
    frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
    frame.setTitle("Animation");
    frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
    frame.setVisible(true);

    Component square = new Component();
    Dimensions.setBoxDimensions(BOX_WIDTH, BOX_HEIGHT);

    frame.add(square);
    frame.setVisible(true);

    for (int i = 0; i < 100; i++){
        Dimensions.setPosition(i,i);
        square.repaint();
        frame.setVisible(true);
    }
}
}



import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;

public class Component extends JFrame{

public void paintComponent (Graphics g){
    Graphics2D g2 = (Graphics2D) g;
    g2.fillRect(Dimensions.xPos, Dimensions.yPos, Dimensions.boxWidth,            Dimensions.boxHeight);
}
}





public class Dimensions {

public static int boxHeight = 50;
public static int boxWidth = 50;
public static int xPos = 0;
public static int yPos = 0;

public static void setBoxDimensions(int width, int height){
    boxHeight = height;
    boxWidth = width;
}
public static void setPosition(int x, int y){
    xPos = x;
    yPos = y;
}
}

Ответы [ 2 ]

0 голосов
/ 06 июля 2013

Лучше переопределить метод рисования в вашем JFrame. Это гораздо проще сделать.

@override 
public void paint(Graphics g){
    super();
    /*
      put the code to draw your shape of shapes here
    */
}

Вы можете вызывать метод перерисовки вашего JFrame всякий раз, когда вы хотите обновить свой JFrame.

0 голосов
/ 13 марта 2012

Поскольку ваш класс компонентов является JFrame, вы не можете добавить JFrame в JFrame. Вы можете добавить JPanel в JFrame и рисовать вместо него JPanel.

Или вместо этого вы можете расширить java.awt.Component?

 import javax.swing.JPanel;
 public class MyComponent extends JPanel{

     public void paintComponent (Graphics g){
           Graphics2D g2 = (Graphics2D) g;
           g2.fillRect(Dimensions.xPos, Dimensions.yPos, Dimensions.boxWidth,                          Dimensions.boxHeight);
  }
  }

И когда вы хотите компонент, вы можете сделать это:

  JPanel square = new MyComponent();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...