Как определить размер и местоположение JPanel - PullRequest
0 голосов
/ 08 марта 2020

Я хочу разработать код, который позволяет отображать счетчик.

Счетчик, который находится в JLabel (compte), сам в JPanel (panneau) отображается хорошо, но я не могу определить его размер и положение.

Вот коды двух классов моей программы:

package com.company;

public class Main {

    public static void main(String[] args) {
    // write your code here
        Compteur compteur = new Compteur();
        compteur.setVisible(true);
    }
}
package com.company;

import javafx.scene.layout.Border;

import javax.swing.*;
import javax.swing.border.LineBorder;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Compteur extends JFrame implements ActionListener {
    private int cpt = 0;
    JButton boutonPlus = new JButton("+");
    JButton boutonMoins = new JButton("-");
    JPanel paneau = new JPanel();
    JLabel compte = new JLabel();


    public Compteur() {
        setSize(1700, 900);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        boutonMoins.setBounds(100, 100, 100, 30);
        boutonPlus.setBounds(250, 100, 100, 30);
        LineBorder lineBorder = new LineBorder(Color.BLACK, 1);
        compte.setBorder(lineBorder);
        this.add(boutonMoins);
        this.add(boutonPlus);
        paneau.add(compte);
        this.add(paneau);
        AfficherCompteur();
        boutonMoins.addActionListener(this);
        boutonPlus.addActionListener(this);
        this.pack();
    }

    private void AfficherCompteur() {
        compte.setText(String.valueOf(cpt));

    }

    @Override
    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == boutonMoins) {
            try {
                cpt--;

            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        if(e.getSource()==boutonPlus) {
            try {
                cpt++;
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
        AfficherCompteur();
    }
}

Ответы [ 2 ]

0 голосов
/ 08 марта 2020

Swing использует менеджер компоновки по умолчанию для упорядочивания компонентов. Если вы хотите sh обеспечить абсолютное позиционирование, вы должны сначала отключить менеджер макетов по умолчанию. Это может быть достигнуто следующим образом.

public Compteur() {
    setLayout(null);

Однако я бы рекомендовал не использовать абсолютные макеты, с ними обычно сложно работать и их трудно поддерживать. Подумайте о том, чтобы прочитать о менеджерах компоновки в официальной документации

0 голосов
/ 08 марта 2020

Чтобы Компонент занимал абсолютную позицию на JFrame, JFrame должен иметь внутреннюю компоновку null (насколько мне известно).

...