Шахматная доска и фигуры - Java

Узнай цену своей работы

Формулировка задачи:

Собственно надоели теория и мелкие задачки. Решил написать что-нибудь интересное. Первое что пришло в голову - шахматы. 1-ый вопрос: Изображение шахматного поля загрузить смог, на форму кинул: main:
public class ChessBoard extends JFrame {
    private JPanel chessBoardRootPanel;
 
    public static void main(String[] args) {
        String packName = ChessBoard.class.getPackage().toString();
        packName = packName.substring(packName.length()-4);
 
        JFrame frame = new JFrame("ChessBoard "+ packName);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        ImagePanel pp = new ImagePanel();
        pp.setLayout(new BorderLayout());
        try {
            pp.setImage(ImageIO.read(new File("chess.jpg")));
        } catch (IOException e) {
            e.printStackTrace();
        }
        frame.add(new JScrollPane(pp));
 
        frame.pack();
        frame.setSize(820, 820);
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
}
класс ImagePanel :
public class ImagePanel extends JPanel {
    private Image image;
    public Image getImage() {
        return image;
    }
    public void setImage(Image image) {
        this.image = image;
    }
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        if(image != null){
            g.drawImage(image, 0, 0, getWidth(), getHeight(), null);
        }
    }
}
Вот только мне не нравится, что при растягивании формы растягивается изображение. Как сделать чтобы изображение оставалось в исходном размере независимо от размера формы?

Решение задачи: «Шахматная доска и фигуры»

textual
Листинг программы
public class ChessBoard extends JFrame {
    private JPanel chessBoardRootPanel;
 
    public static void main(String[] args) {
 
        //...
        ImagePanel pp = new ImagePanel();
        pp.setLayout(new BorderLayout());
        try {
            pp.setImage(ImageIO.read(new File("chessboard.gif")));
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        final JLabel label = new JLabel();
        Icon image = new javax.swing.ImageIcon("ladia.png");
        label.setIcon(image);
        label.setLocation(100,100);
 
        label.addKeyListener(new KeyAdapter() {
 
            public void keyPressed(KeyEvent e) {
                label.setLocation(300,300);
            }
        });
        pp.add(label);
 
        //...
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5