MyFrame
を拡張するクラスがありますJFrame
。NET Beans のデザイン オプションを使用して、このフレームにコンポーネント (コントロール、つまりボタン) を追加しました。オーバーライドされたメソッドMyCanvas
で拡張するクラスがあります。このコンポーネントをクラスに追加しようとしています。しかし、それを追加して表示すると、canvas( ) 自体が に表示されません。(最初に、によって拡張されたクラスを追加しようとしていました。しかし、ここでスレッドを読んで、それを に変更しようとしました。どちらも機能しませんでした。キャンバスの場合、明らかに paint not を使用します)私のコードは以下にありますJPanel
paintComponent()
MyFrame
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 に追加しました。出来た。また、パネル/キャンバスを変更し、フレームをリフレッシュしました。それもうまくいきました。しかし、私はこのようにすることはできません。