2012-04-10 115 views

回答

5

Swing沒有像文本框這樣的動物 - 你的意思是JTextField?如果是這樣,...

  • 你會被簡單地做只是創建一個JTextField - new JTextField()
  • 然後會通過比如JPanel適當的容器調用add(...)它添加到您的GUI。
  • 然後,您可以通過簡單地撥打getText()來閱讀文本,JTextField tutorials將解釋所有這些。
  • 由於接受JTextField的容器必須具有可容納新組件的佈局,因此您還需要閱讀佈局管理器上的教程。
  • 在添加或刪除組件後,您還需要在容器上調用revalidate()repaint(),以便容器佈局管理器知道更新其佈局並重新繪製自己。

這只是一個需要做的事情的一般要點。如果您需要更具體的建議,請告訴我們您的問題的細節,您迄今爲止所嘗試的內容以及工作或失敗的內容。

編輯
你問:

但是我怎麼做到這一點,這樣的文本框是一個「彈出」,而不是除了目前的容器。我擁有它,因此它增加了當前的容器...但這不是我所需要的。

  • 做到這一點,最簡單的方法是通過顯示JOptionPane.showInputDialog(...)。

例如:

// myGui is the currently displayed GUI 
    String foo = JOptionPane.showInputDialog(myGui, "Message", "Title", 
     JOptionPane.PLAIN_MESSAGE); 
    System.out.println(foo); 

這看起來就像這樣:
enter image description here

  • 這樣做的一個更復雜的方法是創建一個圖形用戶界面,並在JOptionPane中顯示出來,並查詢GUI的內容。

例如:

JTextField fooField = new JTextField(15); 
    JTextField barField = new JTextField(15); 
    JPanel moreComplexPanel = new JPanel(new GridBagLayout()); 
    GridBagConstraints gbc = new GridBagConstraints(); 
    gbc.insets = new Insets(5, 5, 5, 5); 
    gbc.weightx = 1.0; 
    gbc.weighty = 1.0; 
    gbc.anchor = GridBagConstraints.WEST; 
    moreComplexPanel.add(new JLabel("Foo:"), gbc); 
    gbc.gridx = 1; 
    gbc.anchor = GridBagConstraints.EAST; 
    moreComplexPanel.add(fooField, gbc); 
    gbc.gridx = 0; 
    gbc.gridy = 1; 
    gbc.anchor = GridBagConstraints.WEST; 
    moreComplexPanel.add(new JLabel("Bar:"), gbc); 
    gbc.gridx = 1; 
    gbc.anchor = GridBagConstraints.EAST; 
    moreComplexPanel.add(barField, gbc); 

    int result = JOptionPane.showConfirmDialog(myGui, moreComplexPanel, 
     "Foobars Forever", JOptionPane.OK_CANCEL_OPTION, 
     JOptionPane.PLAIN_MESSAGE); 
    if (result == JOptionPane.OK_OPTION) { 
    System.out.println("foo = " + fooField.getText());; 
    System.out.println("bar = " + barField.getText());; 
    } 

這將是這樣的:
enter image description here

+1

@ user1261445:有一個相關的例子[這裏](http://stackoverflow.com/a/5812981/ 230513)可能會讓你開始使用[sscce](http://sscce.org/)。 – trashgod 2012-04-10 01:15:47

+0

但我該如何做到這一點,使textField是一個「彈出」,而不是當前容器的添加。我擁有它,因此它增加了當前的容器...但這不是我所需要的。 – user1261445 2012-04-10 02:06:34

+0

@ user1261445:請參閱上面的編輯回答。 – 2012-04-10 03:32:14