Wątek przeniesiony 2015-05-29 14:16 z Java przez bogdans.

Edycja wartości obiektów za pomocą innej klasy

0

Witam.

2 pytania uczącego się programowania Java:

Chcę w głównej klasie programu wykorzystać metodę z innej klasy, która ma zmienić wartości obiektów gui (np. TextField) w głównej klasie.

  1. Wklejony poniżej kod nie działa - jak należy napisać go prawidłowo.

  2. Jeśli chciałbym napisać metodę w innej klasie niż główna, która pobierałaby z pliku xml kilka zmiennych a te miałyby być wartościami prezentowanymi w komponentach w głównym oknie aplikacji (TextField, RadioButton itd.) - jak powinno się prawidłowo tego dokonać?

Dziękuję za pomoc.

Uczący się Javy.


import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JLabel;


public class OknoGlowne {

	private JFrame frame;
	public JTextField tbTekst1;
	
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					OknoGlowne window = new OknoGlowne();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the application.
	 */
	public OknoGlowne() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {
		frame = new JFrame();
		frame.setBounds(100, 100, 450, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		
		tbTekst1 = new JTextField();
		tbTekst1.setBounds(27, 23, 120, 36);
		frame.getContentPane().add(tbTekst1);
		tbTekst1.setColumns(10);
		
		
		JButton btnPrzycisk1 = new JButton("New button");
		btnPrzycisk1.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
												
				Procedury obiektProcedury = new Procedury();
				obiektProcedury.UstawTekst();
							
			}
		});
		btnPrzycisk1.setBounds(37, 70, 89, 23);
		frame.getContentPane().add(btnPrzycisk1);
		
		
	}
}



public class Procedury extends OknoGlowne{
	public void UstawTekst(){
			tbTekst1.setText("abc");
			} 
2

Przekaz do klasy Procedury referencję do głównego okna.


            public void actionPerformed(ActionEvent arg0) {
                Procedury obiektProcedury = new Procedury(OknoGlowne.this); //zrób ze zmiennej obiektProcedury pole i przenieś ten wiersz 
                //do konstruktora
                //nie ma sensu tworzenie, po każdym kliknięciu, nowego obiektu
                obiektProcedury.UstawTekst();
 
            }
...
class Procedury extends OknoGlowne
{
    private OknoGlowne mainWindow;
    public Procedury(OknoGlowne mainWindow)
    {
        this.mainWindow = mainWindow;
    }
    public void UstawTekst()
    {
        mainWindow.tbTekst1.setText("abc");
    }

}

0

Dziękuję za pomoc

1 użytkowników online, w tym zalogowanych: 0, gości: 1