zoomen aus jpanel

Löwenherz

Mitglied
Liebe Forum-Community,

ich habe ein programm geschrieben, das ein Jpanel mit mehreren interaktiven elementen (Jbuttons) und teilweise integrierte Jpanels darstellt. jetzt möchte ich gerne aus diesem jpanel zoomen, und zwar seinen gesamten inhalt. ich habe es probiert ein bufferedimage daraus zu erstellen und die scale()-methode darauf anzuwenden, leider bekomme ich nur das gerade betrachtete teil des jpanels als image zurückgegeben (und das ist auch klar, da es nur ein schnappschuss ist). deshalb dachte ich an eine funktion, die direkt aus dem jpanel zoomt, weiss aber leider noch nicht wie sowas funktioniert. kann mir jemand auf die sprünge helfen?

danke im voraus:)
 

Löwenherz

Mitglied
danke erstmal für beide antworten:)
also ich will einfach den inhalt des panels zoomen ohne dabei die interaktion zu berücksichtigen, aber so dass der gesamte inhalt durch verschieben (scrollen) vorhanden bleibt.
N.B: zum code des JXTransformer konnte ich leider nicht gelangen :(
 

Löwenherz

Mitglied
Java:
org.jdesktop.swinghelper.transformer;
021. 
022.import javax.swing.*;
023.import javax.swing.border.TitledBorder;
024.import javax.swing.event.ChangeEvent;
025.import javax.swing.event.ChangeListener;
026.import java.awt.*;
027.import java.awt.event.*;
028.import java.awt.geom.AffineTransform;
029.import java.util.ArrayList;
030.import java.util.List;
031.import java.util.Vector;
032. 
033./*
034.* @author Alexander Potochkin
035.*
036.* [url]https://swinghelper.dev.java.net/[/url]
037.* [url]http://weblogs.java.net/blog/alexfromsun/[/url]
038.*/
039.public class TransformerDemo extends JFrame implements ChangeListener {
040. 
041.private List<JXTransformer> transformers = new ArrayList<JXTransformer>();
042.private JSlider rotationSlider;
043.private JSlider scalingSlider;
044.private JSlider shearingSlider;
045. 
046.public TransformerDemo() {
047.super("Transformer demo");
048.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
049. 
050.JMenuBar bar = new JMenuBar();
051.JMenu lafMenu = new JMenu("LaF");
052. 
053.JMenuItem winLaf = new JMenuItem("Windows LaF");
054.lafMenu.add(winLaf);
055.winLaf.addActionListener(new ActionListener() {
056.public void actionPerformed(ActionEvent e) {
057.setLaf("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
058.}
059.});
060.JMenuItem motifLaf = new JMenuItem("Motif LaF");
061.lafMenu.add(motifLaf);
062.motifLaf.addActionListener(new ActionListener() {
063.public void actionPerformed(ActionEvent e) {
064.setLaf("com.sun.java.swing.plaf.motif.MotifLookAndFeel");
065.}
066.});
067.bar.add(lafMenu);
068.JMenuItem metalLaf = new JMenuItem("Metal LaF");
069.lafMenu.add(metalLaf);
070.metalLaf.addActionListener(new ActionListener() {
071.public void actionPerformed(ActionEvent e) {
072.setLaf("javax.swing.plaf.metal.MetalLookAndFeel");
073.}
074.});
075. 
076.JMenu settingsMenu = new JMenu("Settings");
077.settingsMenu.setMnemonic(KeyEvent.VK_S);
078.JMenuItem item = new JMenuItem("Reset sliders", KeyEvent.VK_R);
079.item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.ALT_MASK));
080.item.addActionListener(new ActionListener() {
081.public void actionPerformed(ActionEvent e) {
082.rotationSlider.setValue(0);
083.scalingSlider.setValue(100);
084.shearingSlider.setValue(0);
085.}
086.});
087.settingsMenu.add(item);
088.bar.add(settingsMenu);
089.setJMenuBar(bar);
090. 
091.JPanel panel = new JPanel(new BorderLayout());
092.panel.add(createDemoPanel());
093.panel.add(createStressTestPanel(), BorderLayout.EAST);
094.add(new JScrollPane(panel));
095.add(new JScrollPane(createToolPanel()), BorderLayout.SOUTH);
096.pack();
097.}
098. 
099.private void setLaf(String laf) {
100.try {
101.UIManager.setLookAndFeel(laf);
102.SwingUtilities.updateComponentTreeUI(this);
103.} catch (Exception e) {
104.e.printStackTrace();
105.}
106.for (JXTransformer t : transformers) {
107.t.revalidate();
108.t.repaint();
109.}
110.}
111. 
112.private JPanel createStressTestPanel() {
113.JPanel panel = new JPanel();
114.TitledBorder titledBorder = BorderFactory.createTitledBorder("Stress test (with tooltips)");
115.titledBorder.setTitleJustification(TitledBorder.CENTER);
116.panel.setBorder(titledBorder);
117.JButton lowerButton = new JButton("Button");
118.lowerButton.setLayout(new FlowLayout());
119.lowerButton.setToolTipText("Lower button");
120.JButton middleButton = new JButton();
121.middleButton.setToolTipText("Middle button");
122.middleButton.setLayout(new FlowLayout());
123.lowerButton.add(middleButton);
124.JButton upperButton = new JButton("Upper button");
125.upperButton.setToolTipText("Upper button");
126.middleButton.add(upperButton);
127.panel.add(createTransformer(lowerButton));
128.return panel;
129.}
130. 
131.private JPanel createDemoPanel() {
132.JPanel buttonPanel = new JPanel(new GridLayout(3, 2));
133.TitledBorder titledBorder = BorderFactory.createTitledBorder("Try three sliders below !");
134.Font titleFont = titledBorder.getTitleFont();
135.titledBorder.setTitleFont(titleFont.deriveFont(titleFont.getSize2D() + 10));
136.titledBorder.setTitleJustification(TitledBorder.CENTER);
137.buttonPanel.setBorder(titledBorder);
138.JButton b = new JButton("JButton");
139.b.setPreferredSize(new Dimension(100,50));
140.buttonPanel.add(createTransformer(b));
141. 
142.Vector<String> v = new Vector<String>();
143.v.add("One");
144.v.add("Two");
145.v.add("Three");
146.JList list = new JList(v);
147.buttonPanel.add(createTransformer(list));
148. 
149.buttonPanel.add(createTransformer(new JCheckBox("JCheckBox")));
150. 
151.JSlider slider = new JSlider(0, 100);
152.slider.setLabelTable(slider.createStandardLabels(25, 0));
153.slider.setPaintLabels(true);
154.slider.setPaintTicks(true);
155.slider.setMajorTickSpacing(10);
156.buttonPanel.add(createTransformer(slider));
157. 
158.buttonPanel.add(createTransformer(new JRadioButton("JRadioButton")));
159.final JLabel label = new JLabel("JLabel");
160.label.addMouseListener(new MouseAdapter() {
161.public void mouseEntered(MouseEvent e) {
162.Font font = label.getFont();
163.label.setFont(font.deriveFont(font.getSize2D() + 10));
164.}
165. 
166.public void mouseExited(MouseEvent e) {
167.Font font = label.getFont();
168.label.setFont(font.deriveFont(font.getSize2D() - 10));
169.}
170.});
171.buttonPanel.add(createTransformer(label));
172. 
173.return buttonPanel;
174.}
175. 
176.private JXTransformer createTransformer(JComponent c) {
177.JXTransformer t = new JXTransformer(c);
178.transformers.add(t);
179.return t;
180.}
181. 
182.private JPanel createToolPanel() {
183.JPanel panel = new JPanel(new GridLayout(1, 0));
184.rotationSlider = new JSlider(-180, 180, 0);
185.rotationSlider.setLabelTable(rotationSlider.createStandardLabels(90, -180));
186.rotationSlider.setPaintLabels(true);
187.rotationSlider.setPaintTicks(true);
188.rotationSlider.setMajorTickSpacing(45);
189.rotationSlider.addChangeListener(this);
190.rotationSlider.setBorder(BorderFactory.createTitledBorder("Rotate"));
191.panel.add(rotationSlider);
192. 
193.shearingSlider = new JSlider(-10, 10, 0);
194.shearingSlider.setLabelTable(shearingSlider.createStandardLabels(5, -10));
195.shearingSlider.setPaintLabels(true);
196.shearingSlider.setPaintTicks(true);
197.shearingSlider.setMajorTickSpacing(2);
198.shearingSlider.addChangeListener(this);
199.shearingSlider.setBorder(BorderFactory.createTitledBorder("Shear"));
200.panel.add(shearingSlider);
201. 
202.scalingSlider = new JSlider(50, 150, 100);
203.scalingSlider.setLabelTable(scalingSlider.createStandardLabels(25, 50));
204.scalingSlider.setPaintLabels(true);
205.scalingSlider.setPaintTicks(true);
206.scalingSlider.setMajorTickSpacing(10);
207.scalingSlider.addChangeListener(this);
208.scalingSlider.setBorder(BorderFactory.createTitledBorder("Scale"));
209.panel.add(scalingSlider);
210.return panel;
211.}
212. 
213.public void stateChanged(ChangeEvent e) {
214.AffineTransform at = new AffineTransform();
215.at.rotate(rotationSlider.getValue() * Math.PI / 180);
216.double scale = scalingSlider.getValue() / 100.0;
217.at.scale(scale, scale);
218.double shear = shearingSlider.getValue() / 10.0;
219.at.shear(shear, 0);
220.for (JXTransformer t : transformers) {
221.t.setTransform(at);
222.}
223.}
224. 
225.public static void main(String[] args) {
226.TransformerDemo demo = new TransformerDemo();
227.demo.setSize(800, 600);
228.demo.setVisible(true);
229.}
230.}
 
V

vanny

Gast
Mir ist leider noch nicht klar, was du eigentlich machen willst (vielleicht ne skizze!?) aber ich denke, du fährst besser damit, die Bedienelemente (Slider, Buttons, etc.) aus dieser Zoomgeschichte zu entfernen.
Wenn du dann nur die zoombare Ausgabe deiner Daten fluffig in einem JPanel realisieren möchtest ist das schon knifflig genug. (und wie Marco schon mal erwähnte leider eine dieser Sachen, die man ständig neu macht:autsch:)

Wie und wie gut etwas funktioniert und umgesetzt werden kann ist halt zu einem grossen Teil schon vom Konzept abhängig. Ich denke, du tust gut darann, nochmal das Reißbrett zu quälen;)

Gruß Vanny
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bilder zoomen Java Basics - Anfänger-Themen 0
T Zur Maus zoomen / Fehler bei Bilddarstellung Java Basics - Anfänger-Themen 3
T jpeg Bilder zoomen.. Java Basics - Anfänger-Themen 2
C Java-Anwendung im Browser zoomen Java Basics - Anfänger-Themen 1
L Jscrollpane nach zoomen anpassen Java Basics - Anfänger-Themen 20
K Zoomen eines Bildes! Java Basics - Anfänger-Themen 8
L Batik (Zoomen auf einen Buttonklick) Java Basics - Anfänger-Themen 3
richis-fragen Optisch JPanel BorderLayout vertikaler Rand dicker als horizontaler Rand Java Basics - Anfänger-Themen 4
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
J Ein mit UI-Designer erstelltes JPanel einblenden Java Basics - Anfänger-Themen 0
J Eine theoretische Frage zur Praxis - JPanel oder Canvas Java Basics - Anfänger-Themen 5
J Beim Start des Programms zB. eine Linie in JPanel ausgeben Java Basics - Anfänger-Themen 4
C mehrere JPanel in ein JFrame bringen Java Basics - Anfänger-Themen 9
M HILFE JPanel - Graphics Java Basics - Anfänger-Themen 1
B Scrollbares Fenster (JScrollPane) mit JPanel scrollt nicht Java Basics - Anfänger-Themen 3
Zeppi JPanel responsive Grid Java Basics - Anfänger-Themen 0
J JPanel in JScrollPanel Java Basics - Anfänger-Themen 4
Elyt JPanel als HintergrundBild Java Basics - Anfänger-Themen 7
W 2 JPanel in einem JFrame Java Basics - Anfänger-Themen 4
B Wie kann man an ein JPanel eine Scrollbar anheften? Java Basics - Anfänger-Themen 8
O Swing JPanel Java Basics - Anfänger-Themen 4
CptK Klassen JPanel nach Ablauf der Spielzeit neuladen Java Basics - Anfänger-Themen 2
S JPanel wird nicht angezeigt Java Basics - Anfänger-Themen 1
D Animation JPanel Java Basics - Anfänger-Themen 1
M JLabels "verrutschen" beim übergeben von JPanel Java Basics - Anfänger-Themen 2
D Auf angeklicktes JPanel zugreifen Java Basics - Anfänger-Themen 5
D JPanel mehrere Formen zeichnen Java Basics - Anfänger-Themen 5
D JPanel passt die Größe nicht an Java Basics - Anfänger-Themen 22
Y Webinhalt JPanel Java Basics - Anfänger-Themen 6
D Erste Schritte JPanel verschiebt Fenster via setVisible Java Basics - Anfänger-Themen 5
Dechasa Interface JFrame mit mehreren Übereinander liegenden JPanel Java Basics - Anfänger-Themen 5
S JPanel variablenabhängig erstellen Java Basics - Anfänger-Themen 13
J Methoden Dinge auf einem JPanel paltzieren Java Basics - Anfänger-Themen 1
Z JPanel wird zweimal hinterinander gezeichnet.. Wieso? Java Basics - Anfänger-Themen 4
F JFrame resize verschiebt JPanel Java Basics - Anfänger-Themen 3
A altes JPanel entfernen und neues öffnen Java Basics - Anfänger-Themen 5
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
J Probleme mit eigenem JPanel (IDE Eclipse) Java Basics - Anfänger-Themen 4
S JPanel wird versetzt auf JFrame gelegt Java Basics - Anfänger-Themen 2
V jab ich eclipse verrückt gemacht :D ? array Jpanel, Jlabel Grafik Fehler / Frage Java Basics - Anfänger-Themen 5
R Focus auf JPanel im Thread Java Basics - Anfänger-Themen 9
I Problem mit JPanel Java Basics - Anfänger-Themen 0
B JPanel ändert die Hintergrundfarbe nicht Java Basics - Anfänger-Themen 2
F Threads funktionieren auf JPanel nicht Java Basics - Anfänger-Themen 1
C JPanel in MessageDialog Java Basics - Anfänger-Themen 1
B JPanel/JFrame in ein Applet umwandeln (Webfähig) Java Basics - Anfänger-Themen 7
S Inhalt von JPanel erst nach Resize sichtbar Java Basics - Anfänger-Themen 2
M Listener einerm JPanel hinzufuegen Java Basics - Anfänger-Themen 3
gamebreiti Methoden JPanel nach clearAll() und add neu zeichnen Java Basics - Anfänger-Themen 1
S vom JPanel aus durch Mouselistener Internet aufrufen Java Basics - Anfänger-Themen 6
Z JPanel bleibt leer Java Basics - Anfänger-Themen 2
E Bild per Verzeichnis/JFileChooser auf JPanel laden Java Basics - Anfänger-Themen 13
Q JPanel Java Basics - Anfänger-Themen 2
K Erste Schritte jpanel in einer klasse auslagern Java Basics - Anfänger-Themen 3
I Anfängerfrage JPanel repaint() Java Basics - Anfänger-Themen 6
N String auf JPanel bewegen Java Basics - Anfänger-Themen 6
K Erste Schritte Jframe Im Jpanel Java Basics - Anfänger-Themen 4
S Layout mit JPanel in JScrollPanel funktioniert nicht Java Basics - Anfänger-Themen 3
S JPanel drucken -> PrinterException Java Basics - Anfänger-Themen 2
B JPanel -JTable Java Basics - Anfänger-Themen 2
H JPanel Hintergrund transparent setzen? Java Basics - Anfänger-Themen 10
A Input/Output Hashmap in einem JPanel via JList anzeigen Java Basics - Anfänger-Themen 8
P Bekomme in meinen JPanel nur eine JComponente angezeigt Java Basics - Anfänger-Themen 7
A Methoden repaint() zeichnet JPanel falsch Java Basics - Anfänger-Themen 3
R JFrame über einen JPanel Java Basics - Anfänger-Themen 5
I Veränderungen am JPanel vom JDialog aus Java Basics - Anfänger-Themen 6
F JPanel zu klein Java Basics - Anfänger-Themen 5
D GUI - Objekte in JPanel nach oben schieben Java Basics - Anfänger-Themen 2
S JPanel wird nicht eingefügt Java Basics - Anfänger-Themen 3
P Netbeans Platform - JLabel und JPanel setLocation Problem Java Basics - Anfänger-Themen 2
Kenan89 JPanel mit JTable Java Basics - Anfänger-Themen 9
I JPanel in JPanel Java Basics - Anfänger-Themen 2
A Zugriff auf Komponente innerhalb einer JPanel Java Basics - Anfänger-Themen 8
J Auf einem JPanel ein JFrame platzieren Java Basics - Anfänger-Themen 10
S JPanel anzeige Java Basics - Anfänger-Themen 2
propra Wie mache ich einem JPanel mein bereits instanziertes Model bekannt Java Basics - Anfänger-Themen 9
T Zugreifen auf JPanel Java Basics - Anfänger-Themen 4
K JPanel auslagern Java Basics - Anfänger-Themen 9
J Paint Methode von JPanel aufrufen Java Basics - Anfänger-Themen 15
T Tastendruck simulieren in JPanel Java Basics - Anfänger-Themen 3
P JPanel in JTable einfügen Java Basics - Anfänger-Themen 23
E Erste Schritte Objekte werden in JPanel angedockt und maximiert Java Basics - Anfänger-Themen 7
M Componenten auf JPanel anzeigen Java Basics - Anfänger-Themen 2
F JPanel als JPG - weisse Fläche Java Basics - Anfänger-Themen 9
L Image laden und auf jPanel ausgeben Java Basics - Anfänger-Themen 7
M JLabel auf JPanel positionieren Java Basics - Anfänger-Themen 8
M Verständnisfrage zu JPanel Java Basics - Anfänger-Themen 3
M MouseListener funkioniert auf JPanel nicht Java Basics - Anfänger-Themen 8
D JPanel + ein JLabel Java Basics - Anfänger-Themen 8
B JPanel-Oberfläche speichern Java Basics - Anfänger-Themen 9
X JTable in JPanel in JTabbedPane mouseevent von jtable kommt nicht durch Java Basics - Anfänger-Themen 3
P GUI, JPanel Java Basics - Anfänger-Themen 7
H JPanel in andere Klasse übergeben Java Basics - Anfänger-Themen 7
D Grösse eines JPanel hinsichtlich LayoutManager festlegen Java Basics - Anfänger-Themen 4
B JPanel über anderem JPanel Java Basics - Anfänger-Themen 6
F zeichnen in JPanel Java Basics - Anfänger-Themen 7
F Unterschied JPanel und JFrame Java Basics - Anfänger-Themen 5
U JPanel dynamisch gestalten Java Basics - Anfänger-Themen 7

Ähnliche Java Themen

Neue Themen


Oben