簡體   English   中英

JPanel不在JFrame上繪制

[英]JPanel is not draw on JFrame

鏈接到上一個問題:我想在面板上繪制。 我有以下課程:

GMain.java

public class GMain{
    static frmDashboard fDB;

    public static void main(String[] args) {

    fDB = new frmDashboard();
    fDB.setTitle("Graphics Mate");
    fDB.setVisible(true);
    fDB.pack();
    }
}

frmDashboard.java

    public class frmDashboard extends javax.swing.JFrame {
        public frmDashboard() {
            initComponents();
            Clear();
        }

        private void btnPlotActionPerformed(java.awt.event.ActionEvent evt) {  
            frmCPlot fCP = new frmCPlot();
            fCP.setVisible(true);
            fCP.pack();
          }
      }

frmCPlot.java

      public class frmCPlot extends javax.swing.JFrame {
          int W, H;
          int N;

          public frmCPlot() {
              initComponents();
              CPanel cp = new CPanel();
              this.getContentPane().add(cp);
             System.out.println("WW = " + cp.getWidth() + 
                           "    HH = " + cp.getHeight());
     }

     class CPanel extends JPanel{
         int i, j;

         public CPanel(){
             setPreferredSize(new Dimension(400, 400));
             setBackground(Color.WHITE);
         }

        @Override
        public void paintComponent(Graphics g){
              super.paintComponent(g);
              g.drawLine(0, 0, this.getWidth(), this.getHeight());
       }
    }
}

顯示frmCPlot,但不顯示CPanel。 不談論路線。 此外, frmCPlot.java的輸出是:

   *WW = 0  HH = 0*

我按照書上的指示去做。 我試圖在CPanel類的frmCPlot類中添加重繪,但是沒有用。 有什么想法嗎?

擴展JFrame絕不是一個好主意,因為它是頂級組件 這只會導致更多問題。 相反,您應該創建一個擴展JPanel的類並將其添加到JFrame中。 當您要將事物分組在一起時, JPanel非常適合。 由於您仍然必須在程序中的某個位置放置一個JFrame(否則它將不顯示任何內容),因此您必須改為創建一個變量並將JPanel添加到其中。

試試這個

JFrame frame = new JFrame("My Frame");
frame.setSize(500, 500);
frame.getContentPane().add(new JPanel MyPanel);
frame.setVisible(true);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM