С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
LanGrande
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
1

JPanel странности

23.10.2013, 21:12. Просмотров 531. Ответов 4
Метки нет (Все метки)

Привет форумчанам!

Сразу выложу код:
Первый класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.awt.Canvas;
import javax.swing.JFrame;
 
public class Game extends Canvas {
 
    private static final long serialVersionUID = 1L;
    public static final int WIDTH = 560;
    public static final int HEIGHT = 520;
    public static final String NAME = "Title Game";
 
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(WIDTH, HEIGHT);
        frame.setTitle(NAME);
        frame.add(new Map());
        frame.setVisible(true);
        frame.setLocationRelativeTo(null);
 
    }
 
}
Второй класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;
 
import javax.swing.JPanel;
 
public class Map extends JPanel {
    private static final long serialVersionUID = 1L;
    
    int width = 40;
    int height = 40;
    int wid = 40;
    int heg = 40;
    
    private Image image;
 
    public Map() {
        URL url = getClass().getResource("Image/gr.png");
        image = Toolkit.getDefaultToolkit().getImage(url);
    }
 
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        
        g.drawImage(image, 0, 520 - heg, wid, heg, this);
    }
 
}
Обратите внимание вот на эти строчки :
Java
1
g.drawImage(image, 0, 520 - heg, wid, heg, this);
Java
1
int heg = 40;
Java
1
int HEIGHT = 520;
Java
1
frame.setSize(WIDTH, HEIGHT);
По логике вещей картинка должна вывестись в высота фрейма 520 - 40 = 480 то есть отрисоваться в левом нижнем углу,но она рисуется в низу где то.. То есть я сам мышкой фрейм расширяю и он там в низу,так почему же он "вылез"из окна? оъясните,пожалуйста.Это не первый случай,был еще ставлю вроде середину координат (минус половину ширины картинки,то есть ну прям середина) а она где то сбоку рисуется.Что это за странности?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 21:12
Ответы с готовыми решениями:

Добавление JPanel на JPanel, не отображаются те, которые добавлены сверху
Здравствуйте. У меня есть панель fon на которой у меня картинка с фоном и 15 панелей на которых...

Как правильно задать размер JPanel чтобы JFrame при pack() сжимался до размеров JPanel
Подскажите как правильно задать размер JPanel чтобы JFrame при pack() сжимался до размеров JPanel,...

Удаление JPanel кнопкой на этом же JPanel
Есть JPanel объекты, которые представляют собой панельки с какой - то информацией, на них есть...

JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Где ошибка?
JPanel panel_south=new JPanel(); JTextArea textArea=new JTextArea(); Label label=new JLabel('...

JPanel
Всем доброго времени суток. Есть программа(менюшка).В ней отображены 5 компонентов - 3...

4
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
24.10.2013, 10:30 2
А почему Вы решили, что высота JPanel 520?
1
LanGrande
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
24.10.2013, 15:21  [ТС] 3
JPanel , как я понял, это сама рабочая область,собс. ну где то 510 - 500.

Добавлено через 27 минут
Даже если 510 указать то криво будет.
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
24.10.2013, 17:38 4
Цитата Сообщение от LanGrande Посмотреть сообщение
JPanel , как я понял, это сама рабочая область,собс. ну где то 510 - 500.

Добавлено через 27 минут
Даже если 510 указать то криво будет.
Вы неправильно поняли. Это высота всего окна. Около 25-30 точек на заголовок сверху, 5-10 на рамку снизу, зависит от L&F.

Вы не число туда ставьте, а getHeight(), он Вам точную высоту вернет. Заодно и посмотрите, сколько там реально.
1
LanGrande
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
24.10.2013, 20:19  [ТС] 5
Уху,спасибо большое!)
475 оказалось..
0
24.10.2013, 20:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2013, 20:19

JPanel
package com.gmail.kput4uk.frame; import java.awt.BorderLayout; import java.awt.Color; import...

Массив из JPanel
Скажите могу ли я заполнить массив таким образом и как мне его затем можно вставить в JFrame? ...

Рисование в JPanel
Доброго времени суток, форумчане. При разработке апплета с использованием Swing столкнулся с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru