Brauche Swing-Experten

Status
Nicht offen für weitere Antworten.
W

Wolfgang R.

Gast
Hallo zusammen,

ich bin gerade am Verzweifeln. Ich bin soweit, dass ich sage mit Delphi läßt sich's immer noch am besten ein GUI entwickeln.

Ich versuche ein Access-Endlos-Formular nachzuprogrammieren. Ich versuch's hier mal einigermaßen darszustellen. Ich habe ein Panel in dem sich 4 Elemente befinden. Ein TextFeld für eine Zahl, die die Position angibt. Eine JTextPane für beliebig langen Text. Die Pane soll aber immer ca. 4 cm hoch sein. Falls der Text darüber hinaus geht soll ein vertikaler Scrollbalken gezeigt werden. Bei Größenänderung in der Breite soll diese TextPane den Platz bekommen. Die anderen Elemente sollen eine fixe Breite haben. Danach kommen noch zwei Felder für einen Euro-Betrag. Optisch sieht's ungefähr so aus:

Code:
 Position     Beliebiger Text, der, wenn eer zu lange wird einen vertikalen          Euro-Betrag    Euro-Betrag
               Scrollbalken bekommen soll. Es werden ca. 5 Zeilen angezeigt
               bis der Scrollbar erscheint.
Dieses Panel habe ich mit Hilfe des GridBagLayouts aufgebaut und ist für sich allein auch OK.

Es sollen beliebig viele solcher Panels untereinander angeordnet werden können. Dazu kommen diese Panels wieder in ein überrgeordnetes Panel, das Scrollable implementiert und und einer ScrollPane zugewiesen wird. Wenn der Benutzer viele Positionen eingegeben hat, soll er die Liste vertikal scrollen können.

Ich plaziere nun ein solches Positionen-Panel in dem übergeordneten Panel, das die Liste darstellen soll. Alles wunderbar, die Felder sind noch alle leer, die Größe von allen Elementen ist genau wie gewünscht. Bei Größenveränderung des umschließenden Frame ist alles wie gewünscht.

Sobald ich aber ein paar Zeilen Text in die TextPane eintrage und ein Neuzeichnen des Frames veranlasse in dem ich minimal die Breite des Frames ändere, bläst ich das Positionspanel auf. Sieht dann ungefähr so aus:

Code:
.




 Position     Beliebiger Text, der, wenn eer zu lange wird einen vertikalen          Euro-Betrag    Euro-Betrag
             Scrollbalken bekommen soll. Es werden ca. 5 Zeilen angezeigt
             bis der Scrollbar erscheint.
Ich haber Versuche mit verschiedenen Layout-Managern gemacht. Und zwar geht es um das Panel, das die Positions-Panel auf nimmt und das wiederum der ScrollPane übergeben wird. Ich habe es mit einem GridBagLayout, einem GridLayout und einem BorderLayout versucht. Das Ergebnis ist immer dasselbe, sobald meherzeileiger Text eingetragen wird und ein Neuzeichner erfolgt, schwuppst bläst sich das Postions-Panel in der Höhe auf.

Auch ein:
Code:
this.setMaximumSize(new Dimension(100, 100));
für das Positions-Panel hilft nicht. Und nu bin ich ratlos.

Ich poste hier noch den Code für das Postions-Panel. Falls sich jemand meiner an nimmt und noch mehr Information braucht, liefere ich die gerne. Schon mal danke für's Lesen des Ganzen.

Gruß

Wolfgang



Code:
package de.wro.gui.PositionenZusammenstellen.AngebotAuftragsbestaetigung;

import javax.swing.*;
import java.awt.*;

public class PanelAnlagePosition extends JPanel {

  public static final int OBERER_RAND_BREITE = 6;

  public PanelAnlagePosition(int position) {
    this.setLayout(new GridBagLayout());
    this.setBackground(Color.decode("12632256"));
    this.setBorder(BorderFactory.createLineBorder(Color.GRAY));
    this.setMaximumSize(new Dimension(100, 100));

    textFieldPosition = new JTextField(new Integer(position).toString());
    textFieldPosition.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
    textFieldPosition.setHorizontalAlignment(JTextField.CENTER);
    this.add(textFieldPosition, new GridBagConstraints(0, 0, // Zelle
            1, 1, // Ausdehung über Zellen
            0, 0, // Überschüßiger Platz den die Zelle bekommt, realtive Angabe
            GridBagConstraints.NORTHWEST, // Ankerpunkt
            GridBagConstraints.CENTER, // Ausfüllen der Zelle bei GrößenÄnderung
            new Insets(OBERER_RAND_BREITE, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE + 2, 5, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE), 
            FrameAnlageAngebot.POSITIONS_BREITE, 1));                        // Minimalgröße

    editorPaneText = new JEditorPane();
    editorPaneText.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
    //scrollPaneEditor = new JScrollPane(editorPaneText);
    scrollPaneEditor = new JScrollPane(editorPaneText, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
    scrollPaneEditor.setMaximumSize(new Dimension(100,100));
    this.add(scrollPaneEditor, new GridBagConstraints(1, 0, // Zelle
            1, 1, // Ausdehung über Zellen
            1, 0, // Überschüßiger Platz den die Zelle bekommt, realtive Angabe
            GridBagConstraints.NORTHWEST, // Ankerpunkt
            GridBagConstraints.HORIZONTAL, // Ausfüllen der Zelle bei GrößenÄnderung
            new Insets(OBERER_RAND_BREITE, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE, 0, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE), 
            10, 100));                        // Minimalgröße

    textFieldMinderleistung = new JTextField("");
    textFieldMinderleistung.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
    textFieldMinderleistung.setHorizontalAlignment(JTextField.RIGHT);
    this.add(textFieldMinderleistung, new GridBagConstraints(2, 0, // Zelle
            1, 1, // Ausdehung über Zellen
            0, 0, // Überschüßiger Platz den die Zelle bekommt, realtive Angabe
            GridBagConstraints.NORTHWEST, // Ankerpunkt
            GridBagConstraints.CENTER, // Ausfüllen der Zelle bei GrößenÄnderung
            new Insets(OBERER_RAND_BREITE, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE, 5, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE), 
            FrameAnlageAngebot.MINDER_MEHRLEISTUNG_BREITE, 1));                        // Minimalgröße

    textFieldMehrleistung = new JTextField("");
    textFieldMehrleistung.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
    textFieldMehrleistung.setHorizontalAlignment(JTextField.RIGHT);
    this.add(textFieldMehrleistung, new GridBagConstraints(3, 0, // Zelle
            1, 1, // Ausdehung über Zellen
            0, 0, // Überschüßiger Platz den die Zelle bekommt, realtive Angabe
            GridBagConstraints.NORTHWEST, // Ankerpunkt
            GridBagConstraints.CENTER, // Ausfüllen der Zelle bei GrößenÄnderung
            new Insets(OBERER_RAND_BREITE, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE, 5, FrameAnlageAngebot.LINKER_RECHTER_RAND_BREITE + 2),
            FrameAnlageAngebot.MINDER_MEHRLEISTUNG_BREITE, 1));                        // Minimalgröße

  }

  private JTextField textFieldPosition;
  private JEditorPane editorPaneText;
  private JTextField textFieldMinderleistung;
  private JTextField textFieldMehrleistung;
  private JScrollPane scrollPaneEditor;
}
 
G

Guest

Gast
Hi,

habe soeben die Lösung selber gefunden. Mit:
Code:
    this.setPreferredSize(new Dimension(10, 123));
im Positions-Panel funktionierts wie gewünscht.

So im Nachhinein finde ich die Namensgebung der Methoden irreführend. setMaximumSize hat für mich einen bindenderen Charakter als setPreferredSize. Das klingt für mich so: Halte Dich daran solange es geht. Ist die benötigte Größe höher, dann gehe darüber hinaus. Maximumsize heißt nun mal maximale Größe. Aber cverstehe einer diese Logik.

Ein ehemaliger ungarischer Arbeitskollege zitierte bei solchen Gelegenheiten immer einen Spruch aus seiner Heimat zur Zeit des Komunismus: "Nur zur Verwirrung der Russen."

Gruß

Wolfgang
 

Ebenius

Top Contributor
Anonymous hat gesagt.:
So im Nachhinein finde ich die Namensgebung der Methoden irreführend. setMaximumSize hat für mich einen bindenderen Charakter als setPreferredSize. Das klingt für mich so: Halte Dich daran solange es geht. Ist die benötigte Größe höher, dann gehe darüber hinaus. Maximumsize heißt nun mal maximale Größe. Aber cverstehe einer diese Logik.
Das hängt eben davon ab, welchen LayoutManager Du benutzt. MaximumSize ist übrigens im LayoutManager-Interface gar nicht beschrieben, sondern erst im LayoutManager2-Interface. :)

Ebenius
 

André Uhres

Top Contributor
Hier noch ein Versuch mit BorderLayout:
Code:
import javax.swing.*;
import java.awt.*;

public class PanelAnlagePosition extends JPanel {

    private JTextField textFieldPosition;
    private JEditorPane editorPaneText;
    private JTextField textFieldMinderleistung;
    private JTextField textFieldMehrleistung;
    private JScrollPane scrollPaneEditor;
    public static final int OBERER_RAND_BREITE = 6;
    private JPanel panel1;
    private JPanel panel2;

    public PanelAnlagePosition(int position) {
        setLayout(new BorderLayout());
        setBackground(Color.decode("12632256"));
        setBorder(BorderFactory.createLineBorder(Color.GRAY));
        setPreferredSize(new Dimension(600, 100));
        setMaximumSize(new Dimension(3000, 100));
        textFieldPosition = new JTextField(new Integer(position).toString());
        textFieldPosition.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
        textFieldPosition.setHorizontalAlignment(JTextField.CENTER);
        textFieldPosition.setPreferredSize(new Dimension(150, 22));
        panel1 = new JPanel();
        panel1.setPreferredSize(new Dimension(200, 100));
        panel1.add(textFieldPosition);
        add(panel1, BorderLayout.WEST);
        editorPaneText = new JEditorPane();
        editorPaneText.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
        scrollPaneEditor = new JScrollPane(editorPaneText, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        add(scrollPaneEditor);
        textFieldMinderleistung = new JTextField("");
        textFieldMinderleistung.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
        textFieldMinderleistung.setHorizontalAlignment(JTextField.RIGHT);
        textFieldMinderleistung.setPreferredSize(new Dimension(150, 22));
        panel2 = new JPanel();
        panel2.setPreferredSize(new Dimension(350, 100));
        panel2.add(textFieldMinderleistung);
        textFieldMehrleistung = new JTextField("");
        textFieldMehrleistung.setPreferredSize(textFieldMinderleistung.getPreferredSize());
        textFieldMehrleistung.setFont(new Font(FrameAnlageAngebot.FONT_NAME, Font.PLAIN, FrameAnlageAngebot.FONT_SIZE));
        textFieldMehrleistung.setHorizontalAlignment(JTextField.RIGHT);
        panel2.add(textFieldMehrleistung);
        add(panel2, BorderLayout.EAST);
    }

    public static void main(final String[] args) {
        Runnable gui = new Runnable() {

            public void run() {
                final JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setSize(900, 600);
                final JPanel panel = new JPanel();
                panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
                panel.add(new PanelAnlagePosition(0));
                panel.add(new PanelAnlagePosition(1));
                panel.add(new PanelAnlagePosition(2));
                f.add(new JScrollPane(panel));
                f.setVisible(true);
            }
        };
        //GUI must start on EventDispatchThread:
        SwingUtilities.invokeLater(gui);
    }
}
 
W

Wolfgang R.

Gast
Hallo Andre,

vielen Dank für Deine Anregung. Mit kleinen Änderungen sieht's tatsächlich ganau so aus wie bei mir. Man kann also auch mit dem BorderLayout zum gleichen Ergebnis kommen.

Gruß

Wolfgang
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Welche Swing-Version brauche ich . AWT, Swing, JavaFX & SWT 6
Z Bei Problem mit Java Swing brauche dringende Hilfe AWT, Swing, JavaFX & SWT 3
W JavaFX CSS und Vererbung - ich brauche nochmal etwas Nachhilfe AWT, Swing, JavaFX & SWT 28
J 2D-Grafik Brauche Erklärung von Methode AWT, Swing, JavaFX & SWT 1
B Swing Wann brauche ich repaint() ? AWT, Swing, JavaFX & SWT 1
J Swing Wann brauche ich @Override vor der paint()-Methode? AWT, Swing, JavaFX & SWT 1
V Swing Brauche Hilfe mit Label AWT, Swing, JavaFX & SWT 3
K Swing Brauche Hilfe AWT, Swing, JavaFX & SWT 6
O AWT Performance und Bug behebung[brauche Hilfe] AWT, Swing, JavaFX & SWT 2
D Ambitioniertes Projekt - Brauche Stichworte AWT, Swing, JavaFX & SWT 4
D Swing Wozu brauche ich getContentPane()? AWT, Swing, JavaFX & SWT 2
S Ich brauche eine Idee: Animation mit teil eines Bildes AWT, Swing, JavaFX & SWT 16
L Mein Kopf dreht sich... Brauche Hilfe beim GUI gestalten AWT, Swing, JavaFX & SWT 10
J Brauche ganz dringend Hilfe!!! AWT, Swing, JavaFX & SWT 5
S Brauche genaustes Verstaendnis ueber JTextField AWT, Swing, JavaFX & SWT 3
M brauche Hilfe um Einträge aus Jlist zu löschen AWT, Swing, JavaFX & SWT 4
P Welchen Listener brauche ich? AWT, Swing, JavaFX & SWT 7
S Wann brauche ich die prepareRenderer() Methode ? AWT, Swing, JavaFX & SWT 2
D Brauche einfachen HTML Editor AWT, Swing, JavaFX & SWT 2
M Ich habe Werte und Brauche Grafik! AWT, Swing, JavaFX & SWT 3
G Leider trotz allem kein Icon :( Brauche Hilfe AWT, Swing, JavaFX & SWT 3
G Selbstprogrammierter Editor - brauche Hilfe AWT, Swing, JavaFX & SWT 5
M Brauche nur den Pfad zum Speichern AWT, Swing, JavaFX & SWT 8
M Brauche Hilfe zum Einbinden von eigener Schrfitart AWT, Swing, JavaFX & SWT 3
S Brauche Hilfe mit JFrame - NullPointerException AWT, Swing, JavaFX & SWT 7
K Ich brauche GridBagLayout Hilfe AWT, Swing, JavaFX & SWT 4
S Frame, brauche dringend hilfe AWT, Swing, JavaFX & SWT 4
M Konsolenprg-Ausgabe in GUI geleitet - Brauche ich Threads? AWT, Swing, JavaFX & SWT 2
N ProgressBar --> brauche Hilfe AWT, Swing, JavaFX & SWT 4
N Brauche Layout-Hilfe AWT, Swing, JavaFX & SWT 3
N Brauche Layout Hilfe AWT, Swing, JavaFX & SWT 9
O Brauche ich einen neuen Frame? AWT, Swing, JavaFX & SWT 2
V Brauche Hilfe beim Steuern des Sichtbereiches eines JPanel AWT, Swing, JavaFX & SWT 2
D Zoom problem!!! (brauche screenshot...) plz help thx AWT, Swing, JavaFX & SWT 7
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1
MaxG. Swing Swing Komponenten zur Laufzeit hinzufügen AWT, Swing, JavaFX & SWT 2
Java_RY Bin Ratlos bzgl Malen in Swing AWT, Swing, JavaFX & SWT 5
offi Swing Shuttle List AWT, Swing, JavaFX & SWT 9
I Graph mit Swing zeichnen AWT, Swing, JavaFX & SWT 8
D Swing Swing Objekte sehen im Entwurf anders aus als beim Ausführen AWT, Swing, JavaFX & SWT 3
S Swing & Clean und build Problem AWT, Swing, JavaFX & SWT 12
javampir Swing repaint in JavaFX Anwendung AWT, Swing, JavaFX & SWT 3
K Mit JavaFX angefangen. Lohnt sich Swing? AWT, Swing, JavaFX & SWT 28

Ähnliche Java Themen

Neue Themen


Oben