Swing-Komponenten skaliert zeichnen

Status
Nicht offen für weitere Antworten.

iflash

Mitglied
Hallo Gemeinde,


ich suche eine Methode, mit der ich Swing-Komponenten in der Größe skalieren kann. In meinem Fenster sind viele JPanels und dergeichen, die ich über eine Zoom-Funktion gerne allesamt verkleinern würde, damit der Anwender mehr sieht. Ich finde aber keine Methode, denn obowhl ich mit scale in einer eigenen paintComponent-Methode die Größe von Komponenten ja bequem regeln kann, sind JTextFields einfach nicht "klein zu kriegen". Geht denn das aus Prinzip nicht?

Das Problem einfach ausgedrückt: Der Inhalt eines kompletten Fensters soll in der Größe variabel darstellbar sein (Achtung: das automatische Vergößern diverser Layout-Manager hilft nicht weiter, da ich keinen Layout-Manager verwenden kann!).

Vorschläge?

Lieben Gruß


iFlash
 
iflash hat gesagt.:
..ich suche eine Methode, mit der ich Swing-Komponenten in der Größe skalieren kann.
setSize(..) / setPreferredSize(..)

iflash hat gesagt.:
..Das Problem einfach ausgedrückt: Der Inhalt eines kompletten Fensters soll in der Größe variabel darstellbar sein
Den/die richtigen Layoutmanager verwenden.

iflash hat gesagt.:
das automatische Vergößern diverser Layout-Manager hilft nicht weiter, da ich keinen Layout-Manager verwenden kann!..

So ein Pech :bae:
 
Hallo André,


ich habe mich nicht richtig ausgedrückt. Ich will nicht die Größe der Objekte verändern, sondern die Darstellungsgröße insgesamt (so wie wenn man in Word auf 200 % schaltet). Wenn ich also einen Textrahmen in Größe 100 x 100 mit 10 Punkt-Schrift habe, soll das bei einer Darstellung in 50 Prozent nur noch 50 x 50 mit entsprechend kleinerer Schrift gezeichnet werden.

PreferredSize/setSize hilft da nicht weiter, denn die beeinflussen ja nur die Aussenmaße einer Komponente, nicht aber zum Beispiel den Schriftgrad im inneren. Den müsste man dann "von Hand" nachjustieren. Ich suche nach einer eleganteren/einfacheren Version.

Wie eben mit scale. Funktioniert ja auch, aber merkwürdigerweise eben nicht bei allen Objekten.

Weiß jemand mehr?

Gruß

iFlash
 
Also,

es ist noch nicht lange her, da habe ich - ich glaube, hier im Forum - eine Komponente gesehen, die genau das kann. Man fügt der Komponente Unterkomponenten hinzu und kann diese drehen, skalieren etc.

Leider kann ich das gerade einfach nicht mehr finden 🙁 Aber du kannst ja auch mal suchen, zumindest weißt du jetzt, dass es so etwas gibt 😉

Edit: Ach, man muss nur richtig suchen 😉
http://www.java-forum.org/de/viewtopic.php?t=32405&highlight=drehen
==> http://weblogs.java.net/blog/alexfromsun/archive/2006/07/jxtransformer_t.html
 
Azrahel hat gesagt.:
iflash hat gesagt.:
(Achtung: das automatische Vergößern diverser Layout-Manager hilft nicht weiter, da ich keinen Layout-Manager verwenden kann!).

Uiuiui, lass das mal den Hobbit nicht hören :bae:

Was meinst du?

Ich kann den Layout Manager nicht verwenden, weil die Anordung der Elemente sehr speziell ist. Oder kennst du deine Möglichkeit Objekte in einer Reihe mit unterschiedlichen Abständen zueinander anzuordnen?

Lieben Gruß


Armin
 
Code:
/*
 * GridBagDemo2.java
 */
package layout;
import java.awt.*;
import javax.swing.*;
public class GridBagDemo2 extends JFrame {
    public GridBagDemo2() {
        GridBagConstraints gbc;
        jPanel1 = new JPanel();
        jButton1 = new JButton("jButton1");
        jLabel1 = new JLabel();
        jButton2 = new JButton("jButton2");
        jLabel2 = new JLabel();
        jButton3 = new JButton("jButton3");
        jLabel3 = new JLabel();
        jButton4 = new JButton("jButton4");
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        jPanel1.setLayout(new GridBagLayout());
        gbc = new GridBagConstraints();
        gbc.weightx = 1.0;
        jPanel1.add(jButton1, gbc);
        jLabel1.setPreferredSize(new Dimension(5, 0));
        jPanel1.add(jLabel1, gbc);
        jPanel1.add(jButton2, gbc);
        jLabel2.setPreferredSize(new Dimension(40, 0));
        jPanel1.add(jLabel2, gbc);
        jPanel1.add(jButton3, gbc);
        jLabel3.setPreferredSize(new Dimension(160, 0));
        jPanel1.add(jLabel3, gbc);
        jPanel1.add(jButton4, gbc);
        getContentPane().add(jPanel1, BorderLayout.CENTER);
        setSize(600,200);
        setLocationRelativeTo(null);
    }
    public static void main(String args[]) {new GridBagDemo2().setVisible(true);}
    private JButton jButton1, jButton2, jButton3, jButton4;
    private JLabel jLabel1, jLabel2, jLabel3;
    private JPanel jPanel1;
}
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben