Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180
1

Смещенное отображение прямоугольника во фрейме

12.12.2013, 15:49. Показов 948. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет! Разбираюсь с основами графических интерфейсов по Хорстману, возник вопрос. Почему когда мы задаем размер фрейма, например 400 на 400, а затем вписываем во фрейм прямоугольник, с отступом от левого верхнего угла 10 и длиной/шириной 380 - он не вписан, а вылазит за фрейм... Код ниже. Спасибо за объяснение!

import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
 * @version 1.32 2007-04-14
 * @author Cay Horstmann
 */
public class DrawTest
{
   public static void main(String[] args)
   {
      EventQueue.invokeLater(new Runnable()
         {
            public void run()
            {
               DrawFrame frame = new DrawFrame();
               frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
               frame.setVisible(true);
            }
         });
   }
}
 
/**
 * A frame that contains a panel with drawings
 */
class DrawFrame extends JFrame
{
   public DrawFrame()
   {
      setTitle("DrawTest");
      setSize(400, 400);
 
      // add panel to frame
 
      DrawComponent component = new DrawComponent();
      add(component);
   }
 
}
 
/**
 * A component that displays rectangles and ellipses.
 */
class DrawComponent extends JComponent
{
   public void paintComponent(Graphics g)
   {
      Graphics2D g2 = (Graphics2D) g;
 
      // draw a rectangle
 
      double leftX = 10;
      double topY = 10;
      double width = 380;
      double height = 380;
 
      Rectangle2D rect = new Rectangle2D.Double(leftX, topY, width, height);
      g2.draw(rect);
   }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2013, 15:49
Ответы с готовыми решениями:

Отображение панелей во фрейме
В общем-то, есть программа, во фрейме которой лежат объекты, которые можно перетаскивать с помощью...

Swing, отображение JMenu на фрейме
пытаюсь отобразить меню на фрейме,не совсем получается... public class InterfacePhoneClass; { ...

Отображение другого сайта во фрейме
Здравствуйте, друзья. Поставлена такая задача: есть страница, нужно отобразить два фрейма, в...

Нестабильное отображение элементов на фрейме
Добдень, Такой баг(картинку прикрепил): Создал фрейм, добавил прогресбар, запускаю - фрейм...

10
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
12.12.2013, 16:09 2
А что, толщина рамки у фрейма равна нулю со всех сторон?
0
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180
12.12.2013, 16:12  [ТС] 3
Не знаю... По умолчанию она ж по моему равна нулю?
0
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
12.12.2013, 16:16 4
Цитата Сообщение от yourfanat Посмотреть сообщение
Не знаю... По умолчанию она ж по моему равна нулю?
Откройте любое окно в системе и посмотрите - Вы рамку видите? Заголовок окна видите? По-Вашему толщина заголовка равна нулю?
0
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180
12.12.2013, 16:21  [ТС] 5
А можно ли как то задать толщину нулю со всех сторон?
0
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
12.12.2013, 16:38 6
Можно. Но это уже не JFrame, а JWindow. БЕЗ рамки, БЕЗ возможности изменения размеров и перетаскивания. Всё это придется эмулировать руками. Оно Вам надо?
0
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180
12.12.2013, 16:41  [ТС] 7
Оно мне конечно не надо))) Просто хочу разобраться как я могу например создать во фрейме прямоугольник с одинаковыми отступами от сторон фрейма...
0
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
12.12.2013, 17:10 8
Цитата Сообщение от yourfanat Посмотреть сообщение
Просто хочу разобраться как я могу например создать во фрейме прямоугольник с одинаковыми отступами от сторон фрейма...
Ну так и получите в компоненте DrawComponent при ее отрисовке ее размеры и от них пляшите - отнимите от ширины и высоты по ширине рамки, получите ширину и высоту прямоугольника.
0
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180
12.12.2013, 17:31  [ТС] 9
Не подскажите метод?
0
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
13.12.2013, 11:50 10
Цитата Сообщение от yourfanat Посмотреть сообщение
Не подскажите метод?
Какой метод? Как получить размеры компоненты? Не подскажу. Посмотрите, наконец, API!
0
5 / 5 / 0
Регистрация: 30.10.2013
Сообщений: 180
13.12.2013, 12:25  [ТС] 11
Ок! Спасибо! Что то я действительно немного обнаглел)))
0
13.12.2013, 12:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2013, 12:25
Помогаю со студенческими работами здесь

Неправильно отображение в плавающем фрейме
Не получается убрать эти непонятные отсупы, скажите ,как их убрать. Вот файл с которого идёт...

PyQt5 | Отображение виджета во фрейме
Доброго времени суток. Столкнулся со следующей проблемой: у меня есть виджет, который рисует текст,...

Отображение содержимого во фрейме с прокруткой
Здравствуйте, уважаемые форумчане! Как отобразить содержимое (текст, например) во фрейме с...

Можно ли из страницы в одном фрейме обратиться к элементу на странице в другом фрейме?
Имеется фреймсет с двумя фреймами. Можно ли из страницы в одном фрейме обратиться к элементу...

как по нажатию кнопки div во фрейме ссылались на другую страницу во фрейме
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> ...

Как создать якорь во фрейме, и использовать его в другом фрейме
Такая ситуация, у меня два фрейма, слева у меня Содержание, справа Текст Так вот все заголовки я...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru