Java как рисовать на JPanel из другого метода? - PullRequest
2 голосов
/ 27 февраля 2012

Я хочу использовать метод, чтобы получить то, что вы пытаетесь нарисовать (метод getImage ()), но я не могу понять, как нарисовать его в метод рисования. Вот оно пока:

public void getImage(String location,int x,int y,int size){
    Image image = new ImageIcon(location).getImage();
    //paint(image); Thats my question
}
public void paint(Graphics g){
}

Спасибо:)

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

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

Допустим, у вас есть два класса: Окно (которое расширяет JPanel) и Изображение (где вы загружаете изображение, которое будет отображаться в JPanel)

Если вы хотите нарисовать изображение из Image в Window классе, вам нужно создать экземпляр Image в Window классе.

Изображение должно иметь метод, который можно использовать в Окно для рисования изображения в Окно примерно так:

private void drawMe(Graphics g){
    g.drawImage(someImage, x, y, null);
}

и в вашем классе Window (который выходит из JPanel) я рекомендую переопределить метод paintComponent, а не рисовать. В этом методе вы должны вызвать метод drawMe () Image и передать Graphics в качестве аргумента. Вот так:

private Image image = new Image("filePath.jpg", 10, 10); //based on the arguments you setup in the contructor

public void paintComponent(Graphics g){
    image.drawMe(g); //access Image's drawMe() method and pass graphics to it
}

Все расположение чертежей и изображений обрабатывается классом Image , все, что вы делаете с классом Window , заставляет его отображаться на JPanel.

1 голос
/ 27 февраля 2012

Хм, вы не можете сделать это легко. Однако может сделать так, чтобы вызвать перерисовку, вызвав метод repaint(), а затем нарисовать новое изображение в методе рисования.

Код будет выглядеть примерно так:

private Image someImage;
public void getImage(...)
{
  someImage = new ImageIcon(location).getImage();
  repaint(); //will make java call the paint-method in a moment
}

public void paint(Graphics g)
{
  if(someImage!=null)
    //paint someImage here
}

Есть большая статья о том, как Живопись в AWT и Swing работает. Обязательно ознакомьтесь с очень короткой главой Руководство по покраске качелей , в которой содержатся наиболее важные сведения.

...