Рисование в java-приложении

Здравствуйте. Не могли вы привести пример рисования в окне приложение (JFrame+JPanel...), а не в апплете, так как примеров для апплета куча, а для приложения не нашел. Можно не комментировать код. Заранее спасибо.

1 ответов


Таких примеров достаточно много на просторах интернета... Вот давно блуждающий по его просторам код, а автора, вероятно, уже даже не найти):


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class MyPanel extends JPanel{
  public static int x1;
  public static int x2;
  public static int y1;
  public static int y2;
 
  public MyPanel(){
      setLayout(null);
  }

  public static  void setCoord(int c1, int c2, int c3, int c4){
    x1 = c1;
    x2 = c2;
    y1 = c3;
    y2 = c4;
  }

  protected void paintComponent(Graphics g){
    super.paintComponent(g);
    g.drawLine(x1,x2,y1,y2);
  }
}
public class Paint extends JFrame{

  private MyPanel panel = new MyPanel();
  private JButton button = new JButton("Paint");
 
  public Paint(){
    JFrame mf = new JFrame("Paint Test");
    mf.setLayout(new BorderLayout());
    mf.setSize(500, 500);
    mf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      panel.setBorder(BorderFactory.createLineBorder(Color.RED));
      panel.setBackground(Color.WHITE);
    mf.add(panel, BorderLayout.CENTER);
    mf.add(button, BorderLayout.SOUTH);
      button.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent ae){
          panel.setCoord(5, 5, 400, 400);
          panel.repaint();
        }
      });
    mf.setVisible(true);
  }
 
 
  public static void main(String[] args){
    SwingUtilities.invokeLater(new Runnable(){
      public void run(){
        new Paint();
      }
    });
  }
}
 Надеюсь помог)

http://java.sun.com/docs/books/tutorial/uiswing/painting/step2.html - просто пример.
Если лень ходить по ссылке:


package painting;

import javax.swing.SwingUtilities;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

public class SwingPaintDemo2 {
   
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }

    private static void createAndShowGUI() {
        System.out.println("Created GUI on EDT? "+
        SwingUtilities.isEventDispatchThread());
        JFrame f = new JFrame("Swing Paint Demo");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(new MyPanel());
        f.pack();
        f.setVisible(true);
    }
}


class MyPanel extends JPanel {

    public MyPanel() {
        setBorder(BorderFactory.createLineBorder(Color.black));
    }

    public Dimension getPreferredSize() {
        return new Dimension(250,200);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);      

        // Draw Text
        g.drawString("This is my custom Panel!",10,20);
    }  
}

 


http://java.sun.com/products/jfc/tsc/articles/painting/ - довольно подробное описание
http://oreilly.com/catalog/java2d/chapter/ch04.html - ещё пример