Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Forklaring til denne strukturen:

Det er vanlig å strukturere koden slik at klassen tilsvarende et vindu eller panel, typisk en subklasse av JPanel, selv fyller seg med innhold og reagerer på brukerens interaksjon med innholdet (kommer lenger nedforklares senere).
For mindre applikasjoner uten menylinje er det uvanlig å subklasse JFrame, fordi denne er mindre vanlig å gjenbruke. Istedenfor subklasses JPanel som instansieres i en main-metode sammen med en JFrame og settes som JFramens contentPane.

...

 

Code Block
languagejava
titleJPanel
linenumberstrue
import java.awt.BorderLayout;


import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;

public class MySimplePanel extends JPanel {
	
	JTextArea inputText = new JTextArea("Skriv litt tekst her da vel...");
	JTextArea text = new JTextArea("Dette er South i layouten :)");
	
	JLabel label = new JLabel("Jeg gleder meg til UKA!");
 
	public MySimplePanel () {	
		this.createGUI();
	}
	
	private void createGUI() {
		setLayout(new BorderLayout());
		
		add(inputText, BorderLayout.NORTH);
		add(label, BorderLayout.WEST);
		add(text, BorderLayout.SOUTH);
		
		text.setEditable(false);
	}
}

 

 

Code Block
languagejava
titleJFrame
linenumberstrue
import javax.swing.JFrame;
 
public static void main(String[] args) {
		
	JFrame frame = new JFrame();
		
	MySimplePanel panel = new MySimplePanel();
		
	frame.setContentPane(panel);
	frame.setTitle("YOLO");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.pack();
	frame.setVisible(true);
}

 

Hendelsestyrte programmer

Dersom man lager en applikasjon som skal ta i mot brukerinteraksjon (trykking på knapper, tasting på tastatur, museklikk, valg i menyer, osv.), bygger dette videre på strukturen for oppbygning forklart ovenfor. 
Vi ønsker å holde interaksjonen i panelet, ikke i framen.

Prinsippet bak brukerinteraksjon bygger på at man gjør panelet sitt lyttbart. Det vil si at når en knapp, tast, el. trykkes på, oppfattes dette av en lytter (anse dette som automagisk inntil videre) som gir beskjed til panelet om at noe har skjedd, og hva som skjedde. 

For at lytteren skal kunne gi beskjed til panelet, det ha en metode som lytteren vet om. Panelet må derfor implementere ActionListener-interfacet, som innebærer at panelet garantert har metoden void actionPerformed(ActionEvent e).

Code Block
languagejava
titleJPanel with ActionListener
linenumberstrue
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class MySimplePanel extends JPanel implements ActionListener  {
	
	JTextArea inputText = new JTextArea("Skriv litt tekst her da vel...");
	JTextArea text = new JTextArea("Dette er South i layouten :)");
	
	JLabel label = new JLabel("Jeg gleder meg til UKA!");
	
	JButton btn = new JButton("Does nothing");
	
	public MySimplePanel () {
		
		btn.addActionListener(this);
		
		this.createGUI();
	}
	
	private void createGUI() {
		setLayout(new BorderLayout());
		
		add(inputText, BorderLayout.NORTH);
		add(label,BorderLayout.WEST);
		add(text,BorderLayout.SOUTH);
		add(btn, BorderLayout.CENTER);
		
		text.setEditable(false);
	}
	
	public void actionPerformed(ActionEvent e) {
		
		if (e.getSource() == btn) {
			JOptionPane.showMessageDialog(null, "Did nothing!");
		}
	}
}




 

 

 

 

 

 

 

Dette eksempelet genererer et vindu med tekst og en knapp. // Eksempelet vil bli forklart med en video senere

...