Трудно удалить пробелы при максимизации - PullRequest
0 голосов
/ 21 февраля 2020

У меня возникают проблемы при удалении пробелов / пробелов в верхней части окна моей программы, когда они развернуты. Это не проблема, когда в меньшем окне, но появляется снова, когда размер окна изменяется до определенных размеров и / или загружаются данные. Мне бы хотелось, чтобы пропорции были одинаковыми во всех измерениях, причем заголовок (- в данном случае) отображается непосредственно под строкой меню.


Large Space between menu bar and the Title Label(--).

To this.

With data loaded.


Я использую gridbaglayout как для родительского JFrame, так и для контента ( часть, которая не является строкой меню):

Форматирование класса MainPanel:

    private void initComponents() {
        java.awt.GridBagConstraints gridBagConstraints;
        mainPanel = new javax.swing.JPanel();
        textScrollPane = new javax.swing.JScrollPane();
        contigText = new javax.swing.JTable();
        tableScrollPane = new javax.swing.JScrollPane();
        contigTable = new javax.swing.JTable();
        contigLabel = new javax.swing.JLabel();
        load = new javax.swing.JButton();
        viewLabel = new javax.swing.JLabel();
        tableLabel = new javax.swing.JLabel();
        java.awt.GridBagLayout jPanel1Layout = new java.awt.GridBagLayout();
        jPanel1Layout.columnWeights = new double[] { 1.0 };
        jPanel1Layout.rowWeights = new double[] { 1.0 };
        mainPanel.setLayout(jPanel1Layout);

        textScrollPane.setViewportView(contigText);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 1;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        mainPanel.add(textScrollPane, gridBagConstraints);
        tableScrollPane.setViewportView(contigTable);
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 5;
        gridBagConstraints.gridwidth = java.awt.GridBagConstraints.RELATIVE;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weightx = 1.0;
        gridBagConstraints.weighty = 1.0;
        mainPanel.add(tableScrollPane, gridBagConstraints);
        contigLabel.setText("--");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 0;
        gridBagConstraints.weighty = 1.0;     
        gridBagConstraints.gridheight = 1;
        mainPanel.add(contigLabel, gridBagConstraints);
        load.setText("Load");
        load.addMouseListener(new java.awt.event.MouseAdapter() {

            public void mouseClicked(java.awt.event.MouseEvent evt) {
                loadMouseClicked(evt);
            }
        });
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 6;
        mainPanel.add(load, gridBagConstraints);

        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 3;
        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
        gridBagConstraints.weighty = 0.5;

        viewLabel.setText("Contig View");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 2;
        mainPanel.add(viewLabel, gridBagConstraints);
        tableLabel.setText("Contig Table");
        gridBagConstraints = new java.awt.GridBagConstraints();
        gridBagConstraints.gridx = 0;
        gridBagConstraints.gridy = 4;
        mainPanel.add(tableLabel, gridBagConstraints);
    }

Класс GUI, вызываемый из основного метода:

public class Gui {

    /**
     * Function to handle GUI-related drawing functions.
     */
    public static void show() {
        JFrame frame = new JFrame();
        MenuBar menuBar = new MenuBar(frame);
        MainPanel mainPanel = new MainPanel(menuBar);
        frame.setLayout(new java.awt.GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.anchor = GridBagConstraints.PAGE_START;
        gbc.fill = GridBagConstraints.BOTH;
        gbc.weightx = 0.0;
        gbc.weighty = 1;
        frame.getContentPane().add(menuBar.getMainComponent(), gbc);
        gbc = new GridBagConstraints();
        gbc.fill = GridBagConstraints.BOTH;
        gbc.weightx = 1;
        gbc.weighty = 1;
        gbc.gridy = 1;
        gbc.anchor = GridBagConstraints.PAGE_START;
        frame.getContentPane().add(mainPanel.getMainComponent(), gbc);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);



        frame.pack();
        frame.setLocationByPlatform(true);
        frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
        frame.setVisible(true);
    }
}


Menubar Class

package contigviewer;

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


public class MenuBar {

    private JMenuItem barItem1;
    private JMenuItem barItem2;
    private JPanel menuBarPanel;
    private String fasta;
    private String august;

    /**
     * Constructor for the MenuBar Class. 
     * <p>
     * Constructs the MenuBar Object, taking data from the referenced JFrame object. 
     * </p>
     * @param frame JFrame - The parent JFrame.
     */
    public MenuBar(JFrame frame) {
        august = "";
        barItem1 = new JMenuItem(new AbstractAction("Select FASTA File") {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                try {...}
            }
        });
        barItem2 = new JMenuItem(new AbstractAction("Select Augustus GTF/GFF File") {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                try {...}
            }
        });
        JMenu fileMenu = new JMenu("File");
        fileMenu.add(barItem1);
        fileMenu.add(barItem2);
        JMenuBar menuBar = new JMenuBar();
        menuBar.add(fileMenu);
        menuBarPanel = new JPanel(new BorderLayout());
        menuBarPanel.add(menuBar, BorderLayout.PAGE_START);
    }








}

Есть идеи, как остановить это поведение и заставить окно работать согласованно для всех размеров? Я был бы признателен за любую помощь, GUI вещи на самом деле не приходят ко мне естественно!

...