我有一个MyFrame
扩展类JFrame
。我使用 NET BEANS 中的设计选项向此框架添加了组件(控件,即按钮)。我有一个MyCanvas
类扩展JPanel
了一个重写的paintComponent()
方法。我正在尝试将此组件添加到MyFrame
类中。但是当我添加它并使其可见时,canvas( JPanel
) 不会在JFrame
. (首先我试图添加Mycanvas
扩展的类Canvas
。但后来我在这里阅读了一个线程来尝试将其更改为JPanel
。我也没有工作。对于画布我显然不使用绘画paintcomponent()
)我的代码在下面
MyCanvas 类
public class MyCanvas extends javax.swing.JPanel{
MyCanvas()
{
super();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D graphics2D=(Graphics2D)g;
graphics2D.drawRect(10, 10, 10, 10);
graphics2D.drawOval(0, 0, 100, 100);
}
}
我的框架
public class Myframe extends javax.swing.JFrame {
public Myframe() {
initComponents();
@SuppressWarnings("unchecked")
+generatedcode by the designer
private void RectangleActionPerformed(java.awt.event.ActionEvent evt) {
}
private void SquareActionPerformed(java.awt.event.ActionEvent evt) {
}
private void CircleActionPerformed(java.awt.event.ActionEvent evt) {
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
/* Set the Nimbus look and feel */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Myframe().setVisible(true);
}
});
}
public void run() {
new Myframe().setVisible(true);
}
// Variables declaration - do not modify
private javax.swing.JButton Circle;
private javax.swing.JButton Rectangle;
private javax.swing.JButton Square;
// End of variables declaration
}
我的主程序
public static void main(String[] args) {
MyCanvas c = new MyCanvas();
Myframe f= new Myframe();//Works if used JFrame instead of MyFrame
f.add(c);
f.setVisible(true);
}
基本上,我想创建一个 GUI,其中我想要可以触发事件并更改在画布上绘制的内容的按钮。我用一个空的jframe试了一下。将画布/面板添加到 JFrame 。有效。我也改变了我的面板/画布并刷新了框架。那也很好用。但我不能这样做。