我从这里得到了一些有趣的想法和批评,这篇和这篇文章(参见上一篇关于GUI代码的帖子).尽管如此,我仍然对某些事情感到困惑.主要是,显示用户引入图形的最便宜的方式是什么?
更具体而言,我使用了paintComponent()从方法JPanel通过使这个类的一个对象中的类MouseDragged()与方法一起paintComponent(getGraphics())方法(AuxClass2和AuxClass1相应地).
显然,使用getGraphics()而paintComponent()不是repaint()坏主意,我怀疑与内存使用有关.AuxClass2每次用户拖动鼠标时调用也是一个坏主意.
JPanel vs Canvas(即swing vs awt)也有点令人困惑.使用什么以及何时使用?
我一直试图找到一个解决方法,但没有找到一个,特别是对于getGraphics()方法:如何将图形添加到面板?
我用Java编写了以下微绘画程序:
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
class AuxClass1 extends JFrame implements MouseListener, MouseMotionListener{
private JPanel panel1 = new JPanel();
private JPanel panel2 = new JPanel();
private JLabel label1_x = new JLabel();
private JLabel label1_y = new JLabel();
private JLabel label1_x_info = new JLabel("");
private JLabel label1_y_info = new JLabel("");
//add a container keep panels with widgets
private Container con1 …Run Code Online (Sandbox Code Playgroud)