2010-03-18 3 views
0

вот как должна моя программа быть. В первом фрейме есть текстовое поле1, где текст ввода пользователя и когда он нажимает кнопку, будет отображаться новый кадр с текстовым полем2, отображающим введенный текст из текстового поля1. пожалуйста, помогите мне с синтаксисом. Я все еще новичок в java. Большое спасибо, ребята.Мне сложно называть переменную с первого кадра

Первый кадр:

textfield= new JTextField(); 
textfield.setPreferredSize(new Dimension(200,30)) ; 
textfield.setSize(textfield.getPreferredSize()) ; 
textfield.setLocation(95,198) ; 
textfield.setSize(175,28); 
cont.add(textfield); 


public void actionPerformed(ActionEvent e) { 



     this.setVisible(false); 
     new Frame2().setVisible(true); //displays the 2nd frame right? 

} 

теперь я не знаю, что делать на моей 2-ой кадр или с чего начать, потому что я не могу получить переменную из первого кадра

+1

Небольшой код с вашей стороны будет полезно. Мое воображение ограничено. –

+1

Я думаю, вы должны проверить какой-нибудь учебник JFrame ... это будет первое, что вы узнаете :) – RubyDubee

ответ

1

Вы можете передать искомые переменные в конструкторе Frame2:

Frame2 frame2 = new Frame2(textfield.getText()); 
frame2.setVisible(true); 
+0

Ya, и так вы должны создать свой второй кадр. спасибо Божо. – RubyDubee

+0

Как я могу это получить? потому что я не могу это получить. это потому, что у меня есть только один класс и никаких подкласс в основном фрейме? – LockOn

+0

Я сказал вам, как _pass_ это. Затем вы получите его как аргумент конструктора. Значит, ты это делаешь. См. Ответ Webbisshh о том, как должен выглядеть ваш конструктор. (Я предположил, что у вас есть подкласс «Frame» под названием «Frame2») – Bozho

1

Все, что вам нужно сделать, это - Определить новый конструктор для второго кадра с поля 2:

public Frame2(String toDisplay){ 
    textfield2 = new JTextField(toDisplay); 
} 
0

Попробуйте это: (просто скопировать в новый файл с именем FrameTest.java в пакете по умолчанию)

import java.awt.Dimension; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 

public class FrameTest extends JFrame { 

    public static void main(String[] args) { 
    JFrame frame = new FrameTest(); 
    frame.pack(); 
    frame.setVisible(true); 
    } 

    public FrameTest() { 
    JPanel panel = new JPanel(); 

    final JTextField textField = new JTextField(); 
    textField.setPreferredSize(new Dimension(100, 20)); 
    panel.add(textField); 

    JButton button = new JButton("press me"); 
    panel.add(button); 

    setContentPane(panel); 

    button.addActionListener(new ActionListener() { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
     FrameTest.this.setVisible(false); 
     Frame2 secondFrame = new Frame2(textField.getText()); 
     secondFrame.pack(); 
     secondFrame.setVisible(true); 
     } 

    }); 
    } 

    class Frame2 extends JFrame { 

    public Frame2(String text) { 
     getContentPane().add(new JTextField(text)); 
    } 

    } 

} 
+0

Спасибо, что написали то же самое снова :) – RubyDubee

+0

копировать полный рабочий пример всегда проще :-) Кроме того, он говорил о проблемах, проходящих «текстовое поле». Вероятно, текстовое поле не было окончательным (или полем). Поэтому я не уверен, что он решил свою проблему, просто объединив два предыдущих ответа. – Fortega

Смежные вопросы