Frage

Ich habe eine Frage.

Ich habe das folgende Programm und habe Probleme mit einer Sache. Ich habe ein Gitterlayout erstellt, und ich verwende JPanel, um Schaltflächen und Text im Raster einzugeben, aber alles scheint die Größe zu ändern, wenn mein Text sehr lang ist. Kann mir jemand helfen, wie ich verhindern kann, dass dies passiert?

Dies ist mein Code:

package JFrameTester;

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



public class JFrameTester {


public JPanel createContentPane (){

        JPanel panel = new JPanel();
        JButton button1,button2,button3,button4;

        JPanel mainPanel = new JPanel(new GridLayout(2, 0, 40, 10));

        //JPanel red = createSquareJPanel(Color.red, 50);
        button1 =  new JButton ("button1");
        button2 =  new JButton ("button2");
        button3 =  new JButton ("button3");
        button4 =  new JButton ("button4");
        Label one   = new Label("Rohihtjthjhtjghjghmgfjgjghjghj");
        //add(button1);


        mainPanel.add(button1);
        mainPanel.add(one);
        mainPanel.add(button2);
        mainPanel.add(button3);
        mainPanel.add(button4);


        panel.add(mainPanel);
        panel.setOpaque(true);
        return panel;
    }


    public static void main(String[] args) {

        JFrame frame = new JFrame("GridLayout");
        JFrameTester Display = new JFrameTester();
        frame.setContentPane(Display.createContentPane());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);


 }
}
War es hilfreich?

Lösung

Das tun Layout -Manager; Sie vergeben genug Platz für jede Komponente. Sie könnten versuchen, HTML in die einzubetten JLabel Instanz, damit es ein Wickel abwickelt. Ansonsten musst du nur damit leben.

Es ist auch wichtig zu beachten, dass a JPanel Die Instanz ist standardmäßig undurchsichtig.

Andere Tipps

Nun ... die ersten Dinge zuerst. Sie erklären a GridLayout von 2 Zeilen, 0 Spalten. Ist das genau das, was Sie wollen? Ich denke nicht.

Der nächste Teil ist, wo Sie Inhalte hinzufügen. Das Netz wird normalerweise in dynamischer Größe gehalten. Es wird die Zellen auf den kleinstmöglichen Wert verkleinert, den sie können. Aber wenn einige Inhalte größer werden (groß jPanels des Textes) es wird die Zelle erweitern.

Abhängig vom Inhalt der Zelle bleiben sie entweder statisch oder versuchen, alle verfügbaren Raum zu füllen.

Wenn ich Ihre Frage richtig lese, sollten Sie eine statische Größe für Ihre Jbuttons festlegen, indem Sie die Funktionen für die Funktionen verwenden JComponents Siehe Javadoc Link hier. Sie werden wahrscheinlich verwenden wollen setMaximumSize(new Dimension(width,height)); Für jeden Knopf.

Macht Sinn?

Als Randnotiz. Wenn Sie mehr Kontrolle über Ihr Layout wünschen, schauen Sie nach einem GrabBagLayout. Mehr Arbeit, aber mehr Kontrolle.

Dies ist ein älterer Beitrag, aber ich bin gerade darauf gestolpert, während ich dasselbe Problem gesucht habe. Die Verwendung von Frame.Pack () wird verwendet, um alles zu bewegen, um in die angegebene Panelgröße zu passen. Wenn Sie also die Größe einer Sache erhöhen, schrumpfen andere Dinge und bewegen sich, um in das Panel zu passen.

Quelle: http://www.macs.hw.ac.uk/guidebook/?name=jframe&page=2

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top