2011-07-12 177 views
6

我想使用Netbeans在Java中創建一個小遊戲。現在我有一個JFrame和兩個JPanel。
JFrame包含JPanel和一個按鈕。我的意圖是點擊這個按鈕並調整其中一個JPanel(從0到> 0寬度)。
到現在爲止我會調整大小的框架,但我不知道如何調整JPanel的大小。
這是我迄今所做的:從JFrame調整JPanel的大小

Structure 
    frame 
    |_ panel 1 
    |_ panel 2 
    |_ button 

__________________ 
| _  _  | 
| | |  | | _| 
| | |  | | | | 
| | |  | | |>| 
| | |  | | |_| 
| |_|  |_|  | 
|__________________| 

on click should expand frame and panel 
______________________ 
| _  _____  | 
| | |  |  | _| 
| | |  |  | | | 
| | |  |  | |>| -> 
| | |  |  | |_| 
| |_|  |_____|  | 
|______________________| 

這是JPanel中來調整

public class ToResize extends javax.swing.JPanel { 

    ... 

    public void resize(int width) { 
     this.setSize(new Dimension(this.getWidth() + width, this.getHeight())); 
    } 
} 

這是JFrame的與按鈕

public class MyFrame extends javax.swing.JFrame { 

    ... 

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
     if (panelToResize.getWidth() == 0) { 
      panelToResize.resize(100); 
     } else { 
      panelToResize.resize(-100); 
     } 
     validate(); 
    } 
} 
+0

+1爲漂亮的圖表 –

回答

5

1)if yo日子會把你調整的JFrame過,那麼你必須調用

A/setPrefferedSize(getPrefferedSize()+-)JFrame.pack();

B/setPrefferedSize(getPrefferedSize()+-)panelToResize,然後調用JFrame.pack();

2 /如果你只改變大小中間人JPanelsJFrame大小保持不變,那麼你必須撥打revalidate()repaint()panelToResize,

3 /但一切都取決於使用LayoutManager

0

變化setSize()setPreferredSize()

1

我的目的是點擊這個按鈕並調整其中一個JPanels(從0到> 0的寬度)。

使用CardLayoutJSplitPane,或致電panel.setVisible(boolean)

+0

終於看起來像爲'可停靠Panel' +1 – mKorbel

-2

你可以使用:

mainPanel.setResizeHorizontal(true); 
mainPanel.setResizeVertical(true) 

,你的問題將得到解決。

+0

請收拾這個答案;良好的語法和英語是很有用的,使用所提供的格式化工具一起 - 但特別是你要引用爲什麼這解決了這個問題。 –

0

我會以不同的方式做同樣的事情。

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { 
    panelToResize.setVisible(!panelToResize.isVisible()); 
    if(panelToResize.isVisible()) { 
     jButton1.setText("<<"); 
    } else { 
     jButton1.setText(">>"); 
    } 
} 

爲什麼?

1 - 隱藏面板仍然工作就像一個可見的一個。

2 - 需要知道面板是否擴展? panelToResize.isVisible();

3 - 你的JFrame的佈局仍然按預期工作。