Jump to content
SuissoS

Array de JTextField

Recommended Posts

SuissoS

Boas, estou a fazer um trabalho para uma cadeira e estou a ter dificuldades. eu quero abrir uma janela em que peça a introdução de angulos a cada um dos polarizadores conforme o numero de polarizadores(npolarizadores), que vem de outra classe. para isso tenho de criar um array de jtextfields para que apareçam varios jtextfields conforme o numero de polarizadores e ao carregar no botao next no fim, guardar os valores de todos os campos num array(para isso criar a classe angulos).

JTextField jTextFieldArray[] = new JTextField[npolarizadores];

...

for (i = 0; i < npolarizadores; i++) {
		JPanel x = new JPanel();
		JLabel y = new JLabel("Polarizador " + (i + 1) + ": ");
		JButton b = new JButton("OK");
		x.add(y);
		x.add(jTextFieldArray[i]); //linha que diz ter erro
		x.add(b);
		a.add(x);
		b.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent ae) {
				angulos();
			}
		});
	}

Alguem me pode ajudar ? So pus parte do codigo pois acho que chega, mas se precisarem de todo avisem

Edited by Rui Carlos
GeSHi

Share this post


Link to post
Share on other sites
Knitter

A linha "que diz ter erro", diz também qual é o erro pelo que seria importante começar por aí.

Dá nomes de jeito a essas variáveis, e apresenta o código no fórum formatado com as tags correctas.

Share this post


Link to post
Share on other sites
SuissoS

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at java.awt.Container.addImpl(Container.java:1090)

at java.awt.Container.addImpl(Container.java:1090)

at java.awt.Container.add(Container.java:410)

at Interface.Angulos.<init>(Angulos.java:50) -> linha que dá erro;

at Interface.Variables$1.actionPerformed(Variables.java:99) -> linha de "invocação" da classe;

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6505)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6270)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4861)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.window.dispatchEventImpl(window.java:2719)

at java.awt.Component.dispatchEvent(Component.java:4687)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)

at java.awt.EventQueue.access$200(EventQueue.java:103)

at java.awt.EventQueue$3.run(EventQueue.java:688)

at java.awt.EventQueue$3.run(EventQueue.java:686)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:702)

at java.awt.EventQueue$4.run(EventQueue.java:700)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Share this post


Link to post
Share on other sites
Knitter

Ora, como está bem explicito na primeira linha do erro, estás a tentar usar um valor nulo, muito provavelmente não existe nada dentro do array numa, ou em todas, as posições quando estás a tentar inserir o campo de texto no JPanel.

Share this post


Link to post
Share on other sites
SuissoS

já resolvi essa situacao mas agora aparece-me o mesmo erro a guardar o que está nesses JTextFields. Vou por o codigo:

public class Angulos extends JFrame {

JTextField[] jTextFieldArray = new JTextField[npolarizadores+1];
JTextField txt3 = new JTextField(5);
PolarizadorLinear p1;
double[] intensidadefinal;
int i;

public Angulos(JPanel painel, CardLayout cl) {
	revalidate();
	Container c = getContentPane();
	JPanel a = new JPanel(new GridLayout(npolarizadores + 1, 0));
	a.setBackground(Color.WHITE);
	for (i = 0; i < npolarizadores; i++) {
		JPanel x = new JPanel();
		JLabel y = new JLabel("Polarizador " + (i + 1) + ": ");
		JButton b = new JButton("OK");
		x.add(y);
		jTextFieldArray[i]=new JTextField(5);
		x.add(jTextFieldArray[i]);
		x.add(b);
		a.add(x);
		b.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent ae) {
				angulos();
			}
		});
	}
	JPanel sul = new JPanel(new GridLayout(2, 4));

	JButton bnext2 = new JButton("NEXT");
	JPanel blank2 = new JPanel();
	JPanel blank3 = new JPanel();
	JPanel blank4 = new JPanel();
	JPanel blank5 = new JPanel();
	JPanel blank6 = new JPanel();
	JPanel blank7 = new JPanel();
	JPanel blank8 = new JPanel();
	sul.add(blank2);
	sul.add(blank3);
	sul.add(blank4);
	sul.add(blank5);
	sul.add(blank6);
	sul.add(blank7);
	sul.add(blank8);
	sul.add(bnext2);
	a.add(sul);
	c.add(a, BorderLayout.EAST);
	painel.add(a, "Angles");
	bnext2.addActionListener(new ActionListener() {
		@Override
		public void actionPerformed(ActionEvent ae) {
			try {
				Animation t = new Animation();
				JFrame jf = new JFrame();
				jf.setTitle("Animation");
				jf.setSize(600, 400);
				jf.setVisible(true);
				jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				jf.add(t);
			} catch (Exception e) {
				JOptionPane.showMessageDialog(null, "Erro no valor das variáveis!", "ERRO!", JOptionPane.ERROR_MESSAGE);
			}
		}
	});
}

private void angulos() {
	angulos[i] = Double.parseDouble(jTextFieldArray[i].getText()); // dá NullPointerException aqui
	ArrayList<Polarizador> p = new ArrayList<Polarizador>();
	p.add(new Polarizador(angulos[i]));
	p1 = new PolarizadorLinear(intensidadeinicial, p);
	intensidadefinal[i]=p1.getIntensidadeFinal();
}
}

Edited by Rui Carlos
GeSHi

Share this post


Link to post
Share on other sites
Knitter

Se o erro é o mesmo, a solução é a mesma :)

NullPointerException ocorre sempre que passes valores nulos a métodos que não os suportam ou que tentas usar um valor nulo como se fosse um valor válido (ex., aceder a métodos de um objecto não sem valor). Nesta nova versão do teu erro a solução é simples: antes de tentares fazer a conversão verifica se existe algum valor para converter.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.