Stabilirea dimensiunii panourilor (Programare, Java, Interfață Utilizator, Dimensiune, Panou)

Karen a intrebat.

Am 3 panouri. Unul este panoul principal care conține 2 panouri mai mici.

Pentru panoul principal, am folosit

setPreferredSize(new Dimension(350, 190));

Pentru panoul mai mic din stânga, am folosit

setPreferredSize(new Dimension(100, 190));

Pentru panoul mai mic din dreapta, am folosit

setPreferredSize(new Dimension(250, 190));

dar panourile mai mici au rămas de aceeași dimensiune. Cum pot remedia acest lucru?

Acesta este codul pe care îl am în panoul meu principal.

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

public class Panel extends JPanel
{

public Panel(Prison prison)
{
    setup();
    build(prison);
}

private void setup()
{
    setBorder(BorderFactory.createLineBorder(Color.blue));
    setLayout(new BorderLayout(1, 1));
    setPreferredSize(new Dimension(350, 190));
}

private void build(Prison prison)
{
    JTabbedPane tab = new JTabbedPane();       
    tab.addTab("Input", null, new InputPanel(), "Input");
    tab.addTab("Display", null, new DisplayPanel(), "Display");
    add(tab);            
}
}

Comentarii

  • Neglijați să arătați singurul cod relevant, în care este construit InputPanel. –  > Por Jonathan Feinberg.
4 răspunsuri
Michael Borgwardt

Nu faceți acest lucru.

Întregul scop al managerilor de aspect este de a permite redimensionarea dinamică, care este necesară nu numai pentru ferestrele redimensionabile de către utilizator, ci și pentru schimbarea textelor (internaționalizare) și diferite dimensiuni și fonturi implicite.

Dacă doar utilizați corect managerii de aspect, aceștia se vor ocupa de dimensiunile panourilor. Pentru a evita ca componentele dvs. să fie întinse pe tot ecranul atunci când utilizatorul mărește dimensiunea ferestrei, aveți un panou exterior cu un FlowLayout aliniat la stânga și restul interfeței de utilizator ca unic copil al acestuia – care va da interfeței de utilizator dimensiunea preferată și orice surplus este umplut cu culoarea de fundal.

Jonathan Feinberg

Se pare că folosiți un GridLayout sau poate un FlowLayout, niciunul dintre acestea nefiind ceea ce doriți. Probabil că doriți să utilizați un BoxLayout, care respectă dimensiunile preferate ale componentelor sale.

final JPanel p = new JPanel();
p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
p.add(leftPanel);
p.add(mainPanel);
p.add(rightPanel);

Comentarii

  • panoul principal este cel care conține filele, iar sub fila de intrare sunt alte 2 panouri. Pentru panoul principal, folosesc BorderLayout, iar pentru panoul din stânga și din dreapta folosesc GridLayout. –  > Por Karen.
  • Nu puteți modifica dimensiunea celulelor într-un GridLayout(celulele au dimensiuni egale) –  > Por jerjer.
Jill

de asemenea- aceasta este dimensiunea preferată. dacă nu doriți să permiteți redimensionarea, puteți seta și dimensiunile maxime.

dacă aveți posibilitatea, ați putea dori să verificați MIG dar și BoxLayout este ușor de utilizat și se află deja în setul de instrumente java.

smkelsey

Este acesta.

buttonPanel = new JPanel();
buttonPanel.setSize(new Dimension(30, 100));

Nu lăsați managerul de layout să vă ajusteze dimensiunile.