Рисование в 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 - ещё пример