JPanel w JFrame

Odpowiedz Nowy wątek
2012-04-30 11:58
mac90
0

Jak umieścić program osadzony w JPanel w oknie JFrame,tak abym mógł dodać menu itp. Próbowałem to robić w NetBeans przy uzyciu generowanych JFrame ale się poddałem.

W skrócie chciałbym aby ta plansza rysowała się tak jakby w JFrame z menu u góry.

Program w JPanel:

 import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Rectangle2D;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class SquareGrid extends JPanel
{
    SquareRx[][] squares;
    final int szerokoscRamkiOkna = 10;
    final int wierszeSiatki = 30;
    final int kolumnySiatki = 30;
    boolean isSelected;

    public SquareGrid()
    {
        addMouseListener(sluchaczMyszki);
    }

    protected void paintComponent(Graphics g)
    {

        Graphics2D g2 = (Graphics2D)g;
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
        if(squares == null)
        {
            initSquares();
        }   
        for(int i = 0; i < wierszeSiatki; i++)
        {
            for(int j = 0; j < kolumnySiatki; j++)
            {
                squares[i][j].draw(g2);
            }
        }
    }

    private void initSquares()
    {
        squares = new SquareRx[wierszeSiatki][kolumnySiatki];

        int w = getWidth();
        int h = getHeight();
        double xInc = (double)(w - 2*szerokoscRamkiOkna)/kolumnySiatki;
        double yInc = (double)(h - 2*szerokoscRamkiOkna)/wierszeSiatki;
        for(int i = 0; i < wierszeSiatki; i++)
        {
            double y = szerokoscRamkiOkna + i*yInc;
            for(int j = 0; j < kolumnySiatki; j++)
            {
                double x = szerokoscRamkiOkna + j*xInc;
                Rectangle2D.Double r = new Rectangle2D.Double(x, y, xInc, yInc);
                squares[i][j] = new SquareRx(i, j, r);
            }
        }
    }

    private MouseListener sluchaczMyszki = new MouseAdapter()
    {
        public void mousePressed(MouseEvent e)
        {
            Point wspolrzedneKursoraMyszki = e.getPoint();
            double xInc = (double)(getWidth() - 2*szerokoscRamkiOkna)/kolumnySiatki;
            double yInc = (double)(getHeight() - 2*szerokoscRamkiOkna)/wierszeSiatki;
            int row = (int)((wspolrzedneKursoraMyszki.y-szerokoscRamkiOkna)/yInc);
            int col = (int)((wspolrzedneKursoraMyszki.x-szerokoscRamkiOkna)/xInc);
            isSelected = squares[row][col].isSelected();
            squares[row][col].setSelected(!isSelected);
            repaint();
        }
    };

    public static void main(String[] args)
    {
        SquareGrid test = new SquareGrid();
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(test);
        f.setSize(700,700);
        f.setVisible(true);
        f.setResizable(false);
    }
}
class SquareRx
{
    private final int row;
    private final int col;
    Rectangle2D.Double rect;
    Color color = new Color(140,200,160);
    Color bgColor = Color.orange;
    Color selColor = Color.red;
    private boolean selected = false;

    public SquareRx(int r, int c, Rectangle2D.Double rect)
    {
        row = r;
        col = c;
        this.rect = rect;
    }

    public void draw(Graphics2D g2)
    {

        g2.setPaint(selected ? selColor : bgColor);
        g2.fill(rect);
        g2.setPaint(color);
        g2.draw(rect);

    }

    public void setSelected(boolean selected)
    {
        this.selected = selected;
    }

    public boolean isSelected()
    {
        return selected;
    }

}

Pozostało 580 znaków

2012-04-30 12:10
0
    public static void main(String[] args)
    {
        SquareGrid test = new SquareGrid();
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(test,BorderLayout.CENTER);
        ....
        f.add(panel_z_menu,BorderLayout.NORTH);
        f.setSize(700,700);
        f.setVisible(true);
        f.setResizable(false);
    }

To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

2012-04-30 12:44
mac90
0

ok, ale jak ma wyglądać wtedy "panel_z_menu" ?

Pozostało 580 znaków

2012-04-30 15:18
0

Przecież, to jest Twoja decyzja. Opisz co chcesz uzyskać.


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0