vendredi 5 juin 2015
Scale displayed Image via JCheckBox
Posted on 08:58 by verona
Hello everyone,
Ich bin eine Java Studentin, meine Deutschkenntnisse ist so so... Ich brauche hilfe bei der Einsendeaufgaben:
Ich weiß nicht was soll ich bei dem Listener machen und was noch verändern.
Bitte haben Sie etwas Geduld mit mir, ich bin nur studentin.
Wenn Sie mir tipps geben könnten, wäre das echt super, danke schonmal im vorraus!
Das Kontrollkästchen Anpassen im Register Einzelbild des Bildbetrachters wirkt
sich nur auf die Anzeige der Grafiken aus, die noch geladen werden. Ändern Sie
das Programm so, dass über das Kontrollkästchen auch das aktuell angezeigte Bild
angepasst werden kann.
Wie Sie diese Änderung umsetzen, bleibt Ihnen überlassen. Dokumentieren Sie
Ihre Lösung aber bitte ausführlich,
Ich bin eine Java Studentin, meine Deutschkenntnisse ist so so... Ich brauche hilfe bei der Einsendeaufgaben:
Ich weiß nicht was soll ich bei dem Listener machen und was noch verändern.
Bitte haben Sie etwas Geduld mit mir, ich bin nur studentin.
Wenn Sie mir tipps geben könnten, wäre das echt super, danke schonmal im vorraus!
Das Kontrollkästchen Anpassen im Register Einzelbild des Bildbetrachters wirkt
sich nur auf die Anzeige der Grafiken aus, die noch geladen werden. Ändern Sie
das Programm so, dass über das Kontrollkästchen auch das aktuell angezeigte Bild
angepasst werden kann.
Wie Sie diese Änderung umsetzen, bleibt Ihnen überlassen. Dokumentieren Sie
Ihre Lösung aber bitte ausführlich,
Java Code:
-
-
import java.io.File;
-
-
import javax.swing.JFileChooser;
-
import javax.swing.filechooser.FileFilter;
-
import javax.swing.filechooser.FileNameExtensionFilter;
-
-
public class BildbetrachterDialog {
-
-
-
@Override
-
-
if (f.isDirectory())
-
return true;
-
if (name.endsWith(".gif"))
-
return false;
-
if (name.endsWith(".jpg"))
-
return true;
-
if (name.endsWith(".jpeg"))
-
return true;
-
if (name.endsWith(".png"))
-
return true;
-
return false;
-
}
-
-
-
-
@Override
-
return "Grafikdateien";
-
-
}
-
}
-
-
-
oeffnenDialog.addChoosableFileFilter(filter);
-
-
oeffnenDialog.setFileFilter(new MeinFilter());
-
-
oeffnenDialog.setAcceptAllFileFilterUsed(false);
-
-
return oeffnenDialog;
-
}
-
-
-
JFileChooser dialogEinzel;
-
dialogEinzel = dialogErstellen();
-
-
-
int status = dialogEinzel.showOpenDialog(null);
-
-
return (dialogEinzel.getSelectedFile().toString());
-
-
else
-
return null;
-
}
-
-
//die Methode für die Auswahl mehrerer Dateien
-
JFileChooser dialogMehrere;
-
dialogMehrere = dialogErstellen();
-
dialogMehrere.setMultiSelectionEnabled(true);
-
-
//den Dialog anzeigen und den Status holen
-
int status = dialogMehrere.showOpenDialog(null);
-
-
return (dialogMehrere.getSelectedFiles());
-
-
else
-
return null;
-
}
-
}
Java Code:
-
-
import java.awt.FlowLayout;
-
import java.awt.event.ActionEvent;
-
import java.awt.event.ActionListener;
-
import java.io.File;
-
-
import javax.swing.JButton;
-
import javax.swing.JCheckBox;
-
import javax.swing.JFrame;
-
import javax.swing.JLabel;
-
import javax.swing.JPanel;
-
import javax.swing.JSpinner;
-
import javax.swing.JTabbedPane;
-
import javax.swing.JTextField;
-
import javax.swing.SpinnerNumberModel;
-
import javax.swing.event.ChangeEvent;
-
import javax.swing.event.ChangeListener;
-
-
-
//automatisch über Eclipse ergänzt
-
private static final long serialVersionUID = 5926848670766709720L;
-
-
-
-
private BildPanel bildAnzeige, bildAnzeigeSchau;
-
-
-
//adding the JSpinner
-
private JSpinner jspinner;
-
private int showImage;
-
-
-
//The inner class for the listener
-
class MeinListener implements ActionListener, ChangeListener { //must import change listener and itemListener
-
-
@Override
-
//für die Schaltflächen zum Beenden
-
if (e.getActionCommand().equals("Ende"))
-
//für die Auswahl eines einzelnen Bildes
-
if (e.getActionCommand().equals("Laden"))
-
bildLaden();
-
//für die Auswahl der Bilder für die Bilderschau
-
if (e.getActionCommand().equals("LadenSchau"))
-
bilderSchau();
-
-
-
}
-
if (e.getSource() instanceof JSpinner){
-
try {
-
e1.printStackTrace(); } }
-
//What do I need to change or add here?
-
// bildAnzeigeSchau.grafikLaden(nameOfTheLastDatei, skalieren.isSelected());
-
}
-
-
}
-
}
-
-
//der Konstruktor
-
super(titel);
-
initGUI();
-
}
-
-
private void initGUI() {
-
//die Panels für die Register
-
-
//das TabbedPane
-
-
//das Register für die Einzelanzeige
-
//eine neue Instanz für das Panel mit der Grafik erzeugen
-
bildAnzeige = new BildPanel();
-
-
//create the componenets
-
registerEinzel.add(bildAnzeige);
-
-
oeffnen.setActionCommand("Laden");
-
beenden.setActionCommand("Ende");
-
-
-
registerEinzel.add(eingabe);
-
registerEinzel.add(skalieren);
-
registerEinzel.add(oeffnen);
-
registerEinzel.add(beenden);
-
-
//link the listener
-
MeinListener listener = new MeinListener();
-
oeffnen.addActionListener(listener);
-
beenden.addActionListener(listener);
-
skalieren.addActionListener(listener);
-
-
//das Register für die Bilderschau
-
//eine neue Instanz für das Panel mit der Grafik erzeugen
-
bildAnzeigeSchau = new BildPanel();
-
-
//die Komponenten erstellen und einbauen
-
registerSchau.add(bildAnzeigeSchau);
-
-
oeffnenSchau.setActionCommand("LadenSchau");
-
-
beendenSchau.setActionCommand("Ende");
-
//crate a label for the jspinner
-
//create and add the spinner number model
-
SpinnerNumberModel numbermodel = new SpinnerNumberModel (10,2,20,1); //must import spinner number model
-
jspinner = new JSpinner (numbermodel);
-
registerSchau.add(oeffnenSchau);
-
registerSchau.add(beendenSchau);
-
registerSchau.add(label); //add the label and the spinner to the register
-
registerSchau.add(jspinner);
-
-
//link the Listener
-
oeffnenSchau.addActionListener(listener);
-
beendenSchau.addActionListener(listener);
-
//link the change listener to the spinner and JCheckBox
-
jspinner.addChangeListener (listener);
-
skalieren.addChangeListener (listener);
-
-
panelKomplett.add("Einzelbild",registerEinzel);
-
panelKomplett.add("Bilderschau",registerSchau);
-
-
add(panelKomplett);
-
-
setSize(350,450);
-
setResizable(false);
-
setVisible(true);
-
}
-
-
private void bildLaden() {
-
-
BildbetrachterDialog dialog = new BildbetrachterDialog();
-
-
-
if (datei != null) {
-
bildAnzeige.grafikLaden(datei, skalieren.isSelected());
-
eingabe.setText(datei); } }
-
-
//die Methode zur Anzeige der Bilderschau
-
private void bilderSchau() {
-
//einen Standard-Öffnen-Dialog erzeugen
-
BildbetrachterDialog dialogSchau = new BildbetrachterDialog();
-
//die Rückgabe holen und in einem Array vom Typ File ablegen
-
-
//wenn eine Datei ausgewählt wurde, alle Dateien nacheinander anzeigen
-
if (dateien != null) {
-
bildAnzeigeSchau.grafikLaden(datei.toString(), true); }}}
-
-
new Bildbetrachter("Bildbetrachter");
-
-
}
-
}
Java Code:
-
-
-
import java.awt.Dimension;
-
import java.awt.Graphics;
-
import java.awt.image.BufferedImage;
-
import java.io.File;
-
import java.io.IOException;
-
-
import javax.imageio.ImageIO;
-
import javax.swing.JOptionPane;
-
import javax.swing.JPanel;
-
import javax.swing.border.BevelBorder;
-
-
//The class create a Panel with the image uploaded
-
-
-
private static final long serialVersionUID = 7482508662820162216L;
-
-
//Create a bufferedImage object for the input image
-
-
-
//for the change of the image
-
private double neueBildBreite;
-
private double neueBildHoehe;
-
-
-
//The constructor that set the size, draws a box and retrieve the graphics context
-
public BildPanel() {
-
}
-
-
//The method to upload the image, the name of the file is passed as a String
-
//scaled controls whether the image is resized or not
-
-
-
//A local variable for the change of the proportion
-
double proportion;
-
-
try { //the exception handling is mandatory
-
//inputimage bild
-
-
//Should the image be adjusted?
-
if (skaliert == true) {
-
-
//Is the image height is higher that the width (height > width)
-
if (bild.getHeight() > bild.getWidth())
-
-
//then we determine the best new height
-
proportion = (double) this.getSize().height / bild.getHeight();
-
else
-
//otherwise the optimal width
-
proportion = (double) this.getSize().width / bild.getWidth();
-
}
-
else
-
//if not, the proportion remains unchanged
-
proportion = 1.0;
-
-
//Calculate the new height and width
-
//Must be instance variable double
-
//Resizes an image by a percentage of original size (proportional).
-
neueBildBreite = proportion * bild.getWidth();
-
neueBildHoehe = proportion * bild.getHeight();
-
-
//Get the graphic context
-
-
//Clear the display
-
grafikKontext.clearRect(0, 0, this.getSize().width, this.getSize().height);
-
-
//The method drawImage to show the new output scaled image
-
grafikKontext.drawImage(bild, 0, 0, (int) neueBildBreite, (int) neueBildHoehe, this);
-
}
-
JOptionPane.showMessageDialog(this.getParent(), "Beim Laden hat es ein Problem gegeben", "Fehler", JOptionPane.ERROR_MESSAGE);
-
}
-
}
-
-
//Override the method so that the resize image will not disappear
-
@Override
-
//Call the parent method that resize the image
-
super.paintComponent(g);
-
//When an image is displayed, let it resize
-
if (bild != null)
-
g.drawImage(bild, 0, 0, (int) neueBildBreite, (int) neueBildHoehe, this);
-
}
-
}
Scale displayed Image via JCheckBox
Categories: Scale displayed Image via JCheckBox
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire