Java UI mit Swing

WindowBuilder

Benutzeroberflächen in Java kann man mit Swing erstellen. Dies kann durch direkte Codeeingabe geschehen oder man nutzt einen GUI-Builder. Einer der meist genutzten ist der WindowBuilder, der direkt mit Eclipse installiert wird.

Dazu erstellst du einfach ein neues WindowBuilder Element:

Daraufhin wird eine neue Java Klasse erstellt mit einem einfachen Swing UI Element. In diesem Beispiel ein JDialog Element. Jetzt kann man unten auf „Design“ klicken und die Benutzeroberfläche mit dem WindowBuilder erstellen:

Sollte das Tab „Design“ nicht sichtbar sein, kannst du deine Java Datei mit „Rechtsklick > Open With > WindowBuilder Editor“ öffnen!

JOptionPane

int eingabe = JOptionPane.showConfirmDialog(null, "Geben Sie Ihr Einverständnis?", "Einverständnis", JOptionPane.YES_NO_CANCEL_OPTION);
System.out.println(eingabe);
if(eingabe == 0){ //immer YES
	System.out.println("Ja gewählt.");
}else if(eingabe == 1){ //immer NO
	System.out.println("Nein gewählt.");
}else if(eingabe == 2){ //immer CANCEL
	System.out.println("Abbrechen gewählt.");
}
  • YES_NO_OPTION – Auswahl aus „Ja“ und „Nein“
  • YES_NO_CANCEL_OPTION – Auswahl aus „Ja“, „Nein“ und „Abbrechen“
  • OK_CANCEL_OPTION – Auswahl aus „OK“ und „Abbrechen“

Weitere Optionen findest du hier: JOptionPane Übersicht

Button und ActionListener

public class MeinButtonUI extends JDialog {


	private JTextField textField;

	public MeinButtonUI () {
		setLocationRelativeTo(null);
		setSize(300, 150);
		getContentPane().setLayout(null);

		textField = new JTextField();
		textField.setBounds(104, 41, 96, 19);
		getContentPane().add(textField);
		textField.setColumns(10);

		JButton btnNewButton = new JButton("New button");
		btnNewButton.setBounds(77, 10, 150, 21);
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				textField.setText("Hello World");
			}
		});
		getContentPane().add(btnNewButton);

	}
}

ProgressBar 1

public class ProgressBarGUI extends JDialog {
	
	private JButton btnNewButton;
	private JProgressBar progressBar;
	private Integer counter = 0;

	public ProgressBarGUI() {
		setResizable(false);
		setTitle("title");
		setModal(true);
		setLocationRelativeTo(null);
		setSize(300, 150);
		setLayout(null);

		// Button
		btnNewButton = new JButton("+10");
		btnNewButton.setBounds(93, 50, 100, 20);
		btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				counter += 10;
				calculateProgress(200, counter);
			}
		});

		// progress bar
		progressBar = new JProgressBar();
		progressBar.setBounds(49, 20, 187, 20);
		progressBar.setStringPainted(true);
		progressBar.setForeground(new Color(64, 64, 64));
		progressBar.setBackground(Color.WHITE);

		// Add elements to JDialog
		getContentPane().add(btnNewButton);
		getContentPane().add(progressBar);

	}

	// function to increase progress
	public void setProgress(int value) {
		this.progressBar.setValue(value);
		this.progressBar.revalidate();
		this.progressBar.repaint();
	}

	// method to calculate progressBar percent
	public void calculateProgress(int maxProgress, int currentProgress) {
		double currentPercent = (double) 100 / maxProgress * currentProgress;
		setProgress((int) currentPercent);
	}

}

ProgressBar 2 – SwingWorker

public class ProgressBarGUI extends JDialog {

	private JButton btnNewButton;
	private JProgressBar progressBar;
	private int currentProgress = 0;
	private int maxProgress = 200;
	private boolean increaseProgressBar = false;

	public ProgressBarGUI() {
		setResizable(false);
		setTitle("title");
		setModal(true);
		setLocationRelativeTo(null);
		setSize(300, 150);
		setLayout(null);

		// custom SwingWorker
		class MySwingWorker extends SwingWorker<Void, String> {
			protected Void doInBackground() throws Exception {
				Thread.sleep(1000);
				return null;
			}

			protected void done() {
				try {
					if (currentProgress < maxProgress && increaseProgressBar) {
						updateCurrentProgress(20);
						calculateProgress();
						new MySwingWorker().execute();
					}

				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}

		// Button start/stop
		btnNewButton = new JButton("start");
		btnNewButton.setBounds(93, 50, 100, 20);
		btnNewButton.setAlignmentX(Component.CENTER_ALIGNMENT);
		btnNewButton.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				if (!increaseProgressBar) {
					increaseProgressBar = true;
					new MySwingWorker().execute();
					btnNewButton.setText("stop");
				} else {
					increaseProgressBar = false;
					btnNewButton.setText("start");
				}
			}
		});

		// progress bar
		progressBar = new JProgressBar();
		progressBar.setBounds(49, 20, 187, 20);
		progressBar.setStringPainted(true);
		progressBar.setForeground(new Color(64, 64, 64));
		progressBar.setBackground(Color.WHITE);

		// Add elements to JDialog
		getContentPane().add(btnNewButton);
		getContentPane().add(progressBar);

	}

	// function to increase progress
	public void setProgress(int value) {
		this.progressBar.setValue(value);
		this.progressBar.revalidate();
		this.progressBar.repaint();
	}

	// method to calculate progressBar percent
	public void calculateProgress() {
		double currentPercent = (double) 100 / this.maxProgress * this.currentProgress;
		setProgress((int) currentPercent);
	}

	public void updateCurrentProgress(int addToProgress) {
		this.currentProgress += addToProgress;
		calculateProgress();
	}

}

Links

unsere-schule.org

×

Java UI mit Swing

Code: