2014-03-14 62 views
1

我正在使用NetBeans設計Jframe。我沒有幾個問題。有關設計JFrame的建議

  1. 我們能在所需位置創建一個字段的標籤(例如,我們有一個字段中指定的高度,我需要顯示它下面的標籤表明高度釐米)條件?
  2. 我們可以禁用基於條件的場?(通過禁用我的意思是不應該在我的框架被顯示)

有人建議我,我們是否可以通過一些例子實現這些目標。

想這一點,一些有用的建議

private void englishRadioButtonActionPerformed(java.awt.event.ActionEvent evt) {             
     // TODO add your handling code here: 
     JLabel userlabel; 
     if (englishRadioButton.isSelected()) 
       { 
        userlabel = new JLabel("Inches"); 
        userlabel.setBounds(311, 59, 64, 36); 
        //userlabel.setLocation(307,55); 
        //userlabel.setSize(70,40); 
        userlabel.setForeground(Color.green); 
        userlabel.setText("Inches"); 
        userlabel.setVisible(true); 
        System.out.println(englishRadioButton.getBounds()); 
        inchesTextField.setVisible(true); 
       } 
    }   

的文本框是可見後,只有當我點擊英語單選按鈕,在同一時間,我需要得到一個標籤,但它不是與上面的代碼顯示。我可以知道我要去哪裏嗎?

請參閱所附截圖When English button is clicked, I need a label beneath the second textfield as inchesWhen Metric button is clicked,I am disabling the above text field

當點擊按鈕的英語,我需要一個標籤第二文本框的下方爲英寸,我將顯示公制當我禁用文本字段。我能夠實現後者,但不是前者

謝謝!

回答

4
  1. 是的,使用佈局管理器可以輕鬆實現組件的相對放置。
  2. 是的,所有組件都有一個setEnabled(...)和一個setVisible(...)方法,可以在程序運行期間的任何時候調用它們。前者可以幫助您激活/禁用組件,後者有助於使組件可見/不可見。如果您想交換完整的「視圖」,請使用CardLayout。

關於:

可有人建議我,我們是否可以通過一些例子實現這些目標。

請您首先強烈地相信,這裏的努力責任應該是你的,提問者的,因爲你是問問題的人,而最需要學習的人應該儘可能可能。讓我們看看你的嘗試,我們可以幫助你。否則,最好的例子可以在Swing教程中找到。

有關鏈接,請看這裏:Swing Tag Info


編輯
你問:

我嘗試了上面貼的代碼,有條件地禁用文本字段的效果很好,但得到的標籤不起作用。你能否就此提出建議?

我沒有看到您將JLabel添加到任何組件。如果要在事件上創建組件,則必須將其添加到其祖先層次結構最終到達可見的頂級組件(例如JFrame)的組件。然後,在將組件添加到容器(例如JFrame)之後,您必須在容器上調用revalidate()以讓其佈局管理器重新佈置其組件,然後repaint()重新繪製任何「髒」像素。

我再次重申,您最好不要使用空佈局和絕對定位,而是使用佈局管理器和相對定位。如果你想要一個帶有或不帶有可見文本的標籤,通常最好在GUI創建時向GUI添加一個空的JLabel,並且只要需要時設置它的文本,只要標籤位於允許其文本縮小和展開的地方。

此外,對於您當前的問題,您可能希望展示您想要實現的目標以及獲得的內容。或者,如果您還無法在此發佈圖片,請發佈指向您創建的圖片或圖片的鏈接,然後我們會爲您發佈。

+0

我能夠使用setVisible方法有條件地禁用字段。但是我無法有條件地向文本字段添加標籤。嘗試像這樣創建了一個新的標籤對象,並使用setLocation和setSize.But來設置它的位置和大小。但是當我運行我的應用程序時,我沒有在框架的任何位置看到標籤。我能否知道我在做什麼錯誤? – Sandy

+0

@Sandy:最好避免通過setSize,setLocation或setBounds進行絕對定位。最好使用佈局管理器來實現最佳相對位置,以便您的GUI在所有平臺上都能正常工作。要獲得更具體的幫助,請創建併發布[最小示例程序](http://stackoverflow.com/help/mcve)(請查看鏈接),然後向我發送評論以告訴我它已完成。 –

+0

我嘗試了以上發佈的代碼,有條件地禁用文本字段效果很好,但獲取標籤不起作用。你能否就此提出建議? – Sandy