определить минимальный размер контейнера с помощью макетов Java

Я пишу отдельное приложение на java, используя пару JPanel с разными макетами, чтобы упорядочить пользовательский интерфейс. Теперь моя проблема в том, что когда я беру верхнюю часть окна (это панель в макете границы, которая находится внутри другой панели, которая использует макет границы), я пытаюсь добавить класс, который расширяет панель, чтобы нарисовать значок на верх моего окна (нарисуйте на панели). проблема в том, что макет обрезает часть значка или, другими словами, минимизирует панель до определенного размера. Я попытался перейти на flowlayout и другие, но делает то же самое ... поэтому я хотел спросить, не может ли параметр, который сообщает макету, что контейнер (панель или другие) не может быть установлен на размер ниже, чем существует данный размер? другие предложения также помогут, но имейте в виду, что я пытаюсь добавить значок с минимальным изменением в графический интерфейс.

спасибо, что прочитал это и помог Моше


person moshe    schedule 22.11.2011    source источник
comment
если в вашем графическом интерфейсе есть вложенные JPanels, опубликуйте sscce.org, который продемонстрировал вашу проблему, есть несколько способов, как установить любой setXxxSize без объявления для контейнера / JPanel / JComponents setXxxSize :-)   -  person mKorbel    schedule 22.11.2011


Ответы (1)


Контейнер может содержать MinimumSize для JComponent, простой пример,

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CustomComponent extends JFrame {

    private static final long serialVersionUID = 1L;

    public CustomComponent() {
        setTitle("Custom Component Graphics2D");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }

    public void display() {
        add(new CustomComponents());//
        pack();
        // enforces the minimum size of both frame and component
        setMinimumSize(getSize());
        setVisible(true);
    }

    public static void main(String[] args) {
        CustomComponent main = new CustomComponent();
        main.display();
    }
}

class CustomComponents extends JPanel {

    private static final long serialVersionUID = 1L;

    @Override
    public Dimension getMinimumSize() {
        return new Dimension(100, 100);
    }

    @Override
    public Dimension getPreferredSize() {
        return new Dimension(400, 300);
    }

    @Override
    public void paintComponent(Graphics g) {
        int margin = 10;
        Dimension dim = getSize();
        super.paintComponent(g);
        g.setColor(Color.red);
        g.fillRect(margin, margin, dim.width - margin * 2, dim.height - margin * 2);
    }
}
person mKorbel    schedule 22.11.2011