2014-05-21 105 views
0

我遇到了麻煩,調用Jarame中的JPanel。調用JPanel到JFrame上

JPanel中被稱爲 「SubnetPanel」 ==>

SubnetPanel panel = new SubnetPanel(String a, String b, String c); 

在我的JFrame,我做了一個按鈕。

private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    // TODO add your handling code here: 
    String a = JOptionPane.showInputDialog(null, "Geef de naam in : ", 
    "Naam", 1); 
    String b = JOptionPane.showInputDialog(null, "Geef het netwerkadres in : ", 
    "Netwerkadres", 1); 
    String c = JOptionPane.showInputDialog(null, "Geef het subnetmask in : ", 
    "Subnetmask", 1); 

    this.add(new SubnetPanel(a,b,c) { 
      @Override 
      public void paintComponent(Graphics g) { 
       super.paintComponent(g); 
       Graphics2D g2 = (Graphics2D)g; 

       Line2D line = new Line2D.Double(10, 10, 40, 40); 
       g2.setColor(Color.blue); 
       g2.setStroke(new BasicStroke(10)); 
       g2.draw(line); 
      } 
     }); 
     this.setVisible(true); 

} 

但是,當我執行我的JFrame並單擊按鈕,JFrame不會出現。 任何人都可以幫助我嗎?

謝謝!

+0

你怎麼看?只是面板?或者只是框架?或者面板和框架? –

+0

現在,我只有一個JPanel編碼和一個空的JFrame,只有一個JButton和'private void JButtonActionPerformed(java.awt.event.ActionEvent evt){ }' – ernie379

回答

1

用於從可見幀添加(或去除)的部件的基本代碼是:

panel.add(...); 
panel.revalidate(); 
panel.repaint(); 

在你的情況的「面板」將是您的JFrame的內容窗格中。

另外,當您進行自定義繪畫時,還需要覆蓋面板的getPreferredSize()方法,以便佈局管理器可以使用此信息來設置面板的大小/位置。

+0

所以在我的情況下它將是: 'panel.add(SubnetPanel);'? – ernie379

+0

「面板」變量是否引用幀的「內容窗格」? – camickr

+0

「內容窗格」? – ernie379

0

雖然您已將面板添加到框架,但它最初將位於(0,0)處,大小爲0×0,因此您將無法看到它。您需要調整大小並定位它,例如在框架上調用pack()

0

你可能忘了在JButton上加上ActionListner

嘗試以這種方式

JButton jButton = new JButton("Click"); // Your actual button is here 
    jButton.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) {     
      jButtonActionPerformed(e); 
     } 
    }); 
+0

我使用netbeans,所以我認爲我不需要這個? – ernie379

+0

netbeans在後臺做什麼?檢查代碼並找到'addActionListener()'方法。 – Braj