Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

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