如何跨兩個類使用JTextField。例如從一個類獲取一個整數值並將其顯示在另一個類的textField中。從jFrame到JFrame如何在多個類中使用JTextField
回答
有那麼嵌套讓您擁有它得到這實際上顯示它如一個內部的整數值類:
//Note: this is only a rough representation of the concept
// what I am trying to get across, it wouldn't really
// work like this
class Displayer{
ValueGetter valueGetter;
JTextField textField;
public Displayer(){
valueGetter = new ValueGetter();
}
public void display(){
int value = valueGetter.workOutValue();
textField.setText(value);
}
}
即使你能做到這一點,你也不應該這樣做。取而代之的是,有兩個JTextField
s表示兩者屬於Integer
值
你的問題是:
我怎麼會用一個JTextField在兩個班。例如從一個類獲取一個整數值並將其顯示在另一個類的textField中。
而且我會建議您以不同的角度思考這個問題。最好考慮一般問題:
一個對象如何與其他對象共享其數據及其狀態?
一個常見而有用的答案是給出第一個類,這裏是包含JTextField,getter方法的類,如果需要setter方法,允許其他類有能力檢索JTextField(如果需要的話甚至可以改變它)。例如,你可以給你的GUI類中的方法是這樣的:
public String getTextFieldText() {
return textField.getText();
}
然後,你必須確保需要這些信息的類有一個有效實例的GUI類,即一個實例的顯示 GUI,然後讓它在需要來自GUI的最新信息時調用此方法。
編輯 編輯完你的問題,並有加,
從JFrame中到JFrame中
這讓我擔心,因爲它意味着你的程序使用一個以上的JFrame中。如果是這樣,請重新考慮您的程序設計,因爲它需要多個JFrame是不尋常的。如果需要顯示另一個窗口,通常這是通過顯示一個模態或非模態JDialog來完成的。如果需要更改「視圖」,通常使用CardLayout交換JPanel。
編輯2
爲了什麼,我描述了一個例子,請參閱從this answer我的代碼。這種代碼通過從一個模態的JDialog信息轉換成啓動它,準確地使用了我所提到的技術JFrame中:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class DialogEg {
private static void createAndShowGUI() {
MainPanelGen mainPanelGen = new MainPanelGen();
JFrame frame = new JFrame("DialogEg");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanelGen.getMainPanel());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
class MainPanelGen {
private JPanel mainPanel = new JPanel();
private JTextField field = new JTextField(10);
private JButton btn = new JButton(new BtnActn());
private JDialog dialog;
private DialogPanel dialogPanel = new DialogPanel();
public MainPanelGen() {
mainPanel.add(field);
mainPanel.add(btn);
field.setEditable(false);
field.setFocusable(false);
}
public JPanel getMainPanel() {
return mainPanel;
}
private class BtnActn extends AbstractAction {
BtnActn() {
super("Button");
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (dialog == null) {
Window win = SwingUtilities.getWindowAncestor(mainPanel);
if (win != null) {
dialog = new JDialog(win, "My Dialog",
Dialog.ModalityType.APPLICATION_MODAL);
dialog.getContentPane().add(dialogPanel);
dialog.pack();
dialog.setLocationRelativeTo(null);
}
}
dialog.setVisible(true); // here the modal dialog takes over
System.out.println (dialogPanel.getFieldText());
field.setText(dialogPanel.getFieldText());
}
}
}
class DialogPanel extends JPanel {
private JTextField field = new JTextField(10);
private JButton exitBtn = new JButton(new ExitBtnAxn("Exit"));
public DialogPanel() {
add(field);
add(exitBtn);
}
public String getFieldText() {
return field.getText();
}
private class ExitBtnAxn extends AbstractAction {
public ExitBtnAxn(String name) {
super(name);
}
@Override
public void actionPerformed(ActionEvent arg0) {
Window win = SwingUtilities.getWindowAncestor(DialogPanel.this);
if (win != null) {
win.dispose();
}
}
}
}
JPanel中顯示的模態的JDialog已經一個JTextField字段稱爲(適當地) field
:
class DialogPanel extends JPanel {
private JTextField field = new JTextField(10);
而且具有一個getter方法,以允許其他類以檢查該字段的狀態:
public String getFieldText() {
return field.getText();
}
主要GUI類,稱爲MainPanelGen攜帶稱爲dialogPanel
的DialogPanel類的一個實例:
class MainPanelGen {
// .... etc
private DialogPanel dialogPanel = new DialogPanel();
在主GUI一個ActionListener,一個模態的JDialog創建「懶惰」,即,對話是如果JDialog變量爲空,則創建實例,然後將該實例分配給此變量。該DailogPanel對象放置在模態對話框顯示:
public void actionPerformed(ActionEvent arg0) {
if (dialog == null) {
Window win = SwingUtilities.getWindowAncestor(mainPanel);
if (win != null) {
dialog = new JDialog(win, "My Dialog",
Dialog.ModalityType.APPLICATION_MODAL);
dialog.getContentPane().add(dialogPanel);
dialog.pack();
dialog.setLocationRelativeTo(null);
}
}
由於對話框是模態,當顯示該對話框的主界面的代碼流凍結,並且不會重新啓動,直到對話框不再可見。因此,我們知道在對話框中調用setVisible(true)
之後的所有代碼都處於假死狀態,並且只有在處理完對話框後纔會重新啓動。然後,我們查詢DialogPanel的文本框的文本和我們來說:
dialog.setVisible(true); // here the modal dialog takes over
System.out.println (dialogPanel.getFieldText());
field.setText(dialogPanel.getFieldText());
- 1. actionPerformed使用多個JTextField的
- 2. 使用toString爲多個JTextField
- 3. 如何在Android中使用多個類
- 4. Clean多個JTextField
- 5. 如何在JTextField中
- 6. 如何在JTextField中
- 7. 如何在一個JTextField
- 8. 如何從另一個JtextField更新JTextField
- 9. 如何在Jlabel頂部使用Jtextfield?
- 10. 如何使用多個類在PHP
- 11. JTextField中如何在文本
- 12. 如何在JTextField中方法
- 13. 如何在Java中的一個包中使用多個類?
- 14. 如何在多個類中使用相同的類別?
- 15. 如何在用戶類型中獲取JTextField內容的長度?
- 16. 如何使JTextField擴展一個BorderLayout(Java)
- 17. 如何使JTextField中的遊標跨越FlowLayout中的多行?
- 18. 如何使用json_encode在PHP中調用多個類?
- 19. 如何在java中的多個類中使用變量?
- 20. 在一個單獨的類中使用ActionListener在原始類中使用來自JTextfield的數據
- 21. 如何在多個輸入後更改JTextField字體(更新)
- 22. 如何使JTextField半透明
- 23. 如何從一個JTextField數據傳遞到另一個的JTextField
- 24. 我如何在Java中每次輸入一個值到數組中使用JTextField
- 25. 使用JTextField從一個類到另一個
- 26. 如何在另一個不可編輯的JTextField中動態複製JTextField內容
- 27. 使用私人類訪問JTextField
- 28. 我如何一起使用JTextField和JLabel?
- 29. 如何使用jtextfield值彈出jtable
- 30. 如何使用log4j與多個類?
這會工作,謝謝! –