Matematické Fórum


1. 8. 2026 (L) Fórum bude brzy uzavřeno 😿

Nejste přihlášen(a). Přihlásit

#1 17. 03. 2019 13:45 — Editoval NeprejiSdelit (17. 03. 2019 13:46)

NeprejiSdelit
Zelenáč
Příspěvky: 4
Reputace:   
 

Problémy s nesprávným výsledkem při použití GridBagLayoutu v JAVĚ

Dobrý den, mám problém při vytváření šachového GUI v javě. Mám hotovou šachovnici a rád bych ji vložil do panelu všech komponent (uprostřed šachovnice, nalevo panel pro vyhozené figury, napravo jména, další tlačítka atd... Pokud toto relizuji pomocí JPanelů s rozdílnou barvou pozadí, dostanu https://ctrlv.cz/vyOg, toto je vše, co chci, uprostřed je šachovnice. Pokud ale za prostřední panel dosadím šachovnici, dostanu toto:https://ctrlv.cz/enKQ).
Kód(je nepěkný, ale dělal jsem ho narychlo a upravím ho až bude tento problém vyřešen).
VV1E.
Ten objekt hraciSachovnice můžete smazat, přes ten se tam dostávají obrázky figur. za Konstanty.VELIKOST_SACHOVNICE můžete dosadit 8

public class GUI extends JFrame(){

private JPanel sachovnice;
private HraciSachovnice hraciSachovnice;
private ArrayList<Integer> moznosti;
private JButton[][] policka; //array of buttons used to play

public GUI() {
    hraciSachovnice = new HraciSachovnice();
    moznosti = new ArrayList<>();
    initComponents();
}


public void sachovnice() {
    this.sachovnice = new JPanel();
    policka = new JButton[Konstanty.VELIKOST_SACHOVNICE][Konstanty.VELIKOST_SACHOVNICE];
    Border border = BorderFactory.createLineBorder(Color.black, 10);
    sachovnice.setBorder(border);
    sachovnice.setLayout(new GridLayout(8, 8, 0, 0));
    for (int y = 0; y < Konstanty.VELIKOST_SACHOVNICE; ++y) {
        for (int x = 0; x < Konstanty.VELIKOST_SACHOVNICE; ++x) {
            JButton button = new JButton("");
            if ((y + x) % 2 == 0) {
                button.setBackground(Konstanty.WHITE);
            } else {
                button.setBackground(Konstanty.DARK);
            }
            button.setHorizontalTextPosition(JButton.CENTER);
            button.setVerticalTextPosition(JButton.CENTER);
            button.setFont(Konstanty.KROUZEK_FONT);

            policka[y][x] = button;
        }
    }
    for (int y = 0; y < Konstanty.VELIKOST_SACHOVNICE; ++y) {
        for (int x = 0; x < Konstanty.VELIKOST_SACHOVNICE; ++x) {
            sachovnice.add(policka[y][x]);
            if (hraciSachovnice.getSachovnice(y, x) != null) {
                Image img = hraciSachovnice.getSachovnice(y, x).getFigura().getImage();
                Image newImage = img.getScaledInstance(100, 100, Image.SCALE_SMOOTH);
                policka[y][x].setIcon(new ImageIcon(newImage));
            }
        }
    }
}

private void initComponents() {
    sachovnice();
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
    setMinimumSize(new java.awt.Dimension(730, 730));
    getContentPane().setBackground(Konstanty.BARVA_POZADI);
    setLocationRelativeTo(null);
    getContentPane().setLayout(null);
    JPanel container = new JPanel();
    container.setLayout(new GridBagLayout());
    GridBagConstraints g = new java.awt.GridBagConstraints();
    JPanel panel1 = new JPanel();
    g.gridx = 0;
    g.gridy = 0;
    g.weightx = 1.0;
    g.weighty = 1.0;
    g.fill = GridBagConstraints.BOTH;
    panel1.setBackground(Color.red);
    container.add(panel1, g);

    g.gridx = 1;
    g.gridy = 0;
    g.weighty = 8.0;
    g.fill = GridBagConstraints.BOTH;
    sachovnice.setBackground(Color.black);
    container.add(sachovnice, g);

    JPanel panel2 = new JPanel();
    g.gridx = 2;
    g.gridy = 0;
    g.weighty = 1.0;
    g.weightx = 1.0;
    g.fill = GridBagConstraints.BOTH;
    panel2.setBackground(Color.WHITE);
    container.add(panel2, g);
    container.setBounds(0, 0, 600,600);
    container.setBackground(Color.BLACK);
    getContentPane().add(container);

}

public static void main(String[] args) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new GUI().setVisible(true);
        }
    });
}
}

Offline

  • (téma jako vyřešené označil(a) NeprejiSdelit)

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson