如何绘制JPanel? (Swing / graphics Java)
|
我正在一个项目中尝试创建一个绘画程序。
到目前为止,我已经使用Netbeans来创建GUI并设置程序。
到目前为止,我已经能够调用在其中绘制所需的所有坐标,但是我对如何在其中实际绘制感到非常困惑。
在我的代码接近尾声时,我在面板内部进行绘制的尝试失败。
任何人都可以在这样的示例中解释/显示如何使用图形吗?
我发现的所有示例都构成一个类并将其扩展为
JPanel
,但我不知道是否可以这样做,因为它是在netbeans中生成的。
我需要在JFrame
内画一个ѭ0inside。我不知道将图形类放在哪里。
JavaPaintUI类别
package javapaint;
import java.awt.*;
import javax.swing.*;
public class JavaPaintUI extends javax.swing.JFrame {
public JavaPaintUI() {
initComponents();
}
private void initComponents() {
jPanel2 = new javax.swing.JPanel();
jPanel2.setBackground(new java.awt.Color(255, 255, 255));
jPanel2.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
jPanel2.addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
jPanel2MousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
jPanel2MouseReleased(evt);
}
});
jPanel2.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(java.awt.event.MouseEvent evt) {
jPanel2MouseDragged(evt);
}
});
pack();
}// </editor-fold>
int currentX, currentY, oldX, oldY;
private void jPanel2MouseDragged(java.awt.event.MouseEvent evt) {
if (tool == 1) {
currentX = evt.getX();
currentY = evt.getY();
oldX = currentX;
oldY = currentY;
System.out.println(currentX + \" \" + currentY);
System.out.println(\"PEN!!!!\");
}
}
private void jPanel2MousePressed(java.awt.event.MouseEvent evt) {
oldX = evt.getX();
oldY = evt.getY();
System.out.println(oldX + \" \" + oldY);
}
//mouse released//
private void jPanel2MouseReleased(java.awt.event.MouseEvent evt) {
if (tool == 2) {
currentX = evt.getX();
currentY = evt.getY();
System.out.println(\"line!!!! from\" + oldX + \"to\" + currentX);
}
}
//set ui visible//
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new JavaPaintUI().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JPanel jPanel2;
// End of variables declaration
class jPanel2 extends JPanel {
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawString(\"BLAH\", 20, 20);
g.drawRect(200, 200, 200, 200);
}
}
}
屏幕截图
整个东西是JFrame
,中间的白色部分是ѭ5is,这就是我要画的东西。
没有找到相关结果
已邀请:
4 个回复
垫歌蝎降凤
屏幕截图 其他示例-更适合多条线和多条线段 HFOE很好地链接了该主题。在“自定义绘画方法”一文中,Camickr还对活动绘画与绘画之间的描述进行了描述,每幅7分。 另请参见使用“ 7”中的绘画方法。
喷乡顾沥沪
/
/ etc之外使用
对象。方法。 但是,您可以使用一种称为“帧缓冲”的技术。基本上,您需要有一个BufferedImage并直接在其上绘制(请参见ѭ12方法);您可以保留该图形上下文,并在同一ѭ7实例上对多个操作重复使用,仅在以下情况下无需一直重新创建它:创建一个新实例)。然后,在
\ѭ11中,只需要将simply7ѭ实例绘制到
。使用这种技术,您可以通过仿射变换非常轻松地执行缩放,平移和旋转操作。
门锑腺潮
} 输出看起来像这样:
久纳禾澎