您已在GPanel的实例上调用setBorder(),然后在后者的paintComponent()实现中修改了图形上下文的变换.边界不知道这一点,所以显示的结果完全是预期的.相反,请遵循setBorder()的父JComponent实现建议:“将组件放在JPanel中并在JPanel上设置边框.”相关示例显示为here.

在下面的变化中,

>封闭的bPanel现在具有Border,封闭的gPanel可以安全地操作图形上下文.

>在translate()之前,红点以原点为中心;在translate()之后,蓝点以原点为中心,但原点已移动.

>当你真的想要覆盖getPreferredSize()时,不要使用setPreferredSize().

>不要不必要地扩展JFrame.

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Graphics;

import java.awt.Graphics2D;

import javax.swing.BorderFactory;

import javax.swing.JFrame;

import javax.swing.JPanel;

class GTest {

public static void main(String[] args) {

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

GPanel gPanel = new GPanel();

JPanel bPanel = new JPanel();

bPanel.setBorder(BorderFactory.createTitledBorder("Title"));

bPanel.add(gPanel);

f.add(bPanel);

f.pack();

f.setLocationRelativeTo(null);

f.setVisible(true);

}

private static class GPanel extends JPanel {

private static final int N = 16;

private void doDrawing(Graphics g) {

Graphics2D g2 = (Graphics2D) g;

g2.setPaint(Color.red);

g.fillOval(-N, -N, 2 * N, 2 * N);

g2.translate(getWidth() / 2, getHeight() / 2);

g2.setPaint(Color.blue);

g.fillOval(-N, -N, 2 * N, 2 * N);

}

@Override

public void paintComponent(Graphics g) {

super.paintComponent(g);

doDrawing(g);

}

@Override

public Dimension getPreferredSize() {

return new Dimension(256, 256);

}

}

}

java translate_java – 当使用translate()方法时,JPanel中的Tit...相关推荐

  1. java两个return_关于java:调用另一个方法时return语句不起作用

    我最近开始尝试使用return语句,对此我有一个小疑问-当我有一个调用另一个方法的方法时,将显示我正在调用的方法的return语句吗? 让我们举例说明一下 /** Program to test re ...

  2. java 父类子类有同名方法时如何调用

    父类引用默认调用子类重写的方法 如果父类的引用p指向了子类的实例,则通过这个引用p访问同名方法时,调用的是子类重写的方法. 父类引用p可以指向不同的子类,调用不同子类重写的不同的同名方法,进而达到类间 ...

  3. java私有属性和私有方法_Java 9中什么是私有的?

    java私有属性和私有方法 在进行面试时,我发现大多数应聘者都不知道Java中的private修饰符真正意味着什么. 他们对此有所了解,足以应付日常编码,但还远远不够. 这不成问题. 足够了解就足够了 ...

  4. java 继承 实现 会重写 方法吗_java 中继承,组合,重载,重写的实现原理 (转)...

    我们知道,继承,组合,重载,重写是java语言的面向对象实现的基本特征. 那么在java内部,究竟是如何实现这些面对对象的基本特征的呢? 继承和组合是面向对象中代码复用的主要实现方式,他们可以达到类似 ...

  5. java怎么传入参数到方法当中_java中方法传入参数时:值传递还是址传递?

    JAVA中的数据类型有两大类型: ① 基本数据类型:逻辑型(boolean).文本型(char).整数型(byte.short.int.long).浮点型(float.double) ② 引用数据类型 ...

  6. Java解决递归栈溢出_方法递归调用中java栈溢出的问题 及 解答 | 学步园

    为什么运行如下程序 , 方法sum2 不会导致栈溢出, 方法sum 会导致栈溢出? --------output----------- 32004000 java.lang.StackOverflow ...

  7. Java在上传或下载时header中Content-Disposition的作用以及Content-disposition中Attachment和inline的区别

    Content-disposition 是 MIME 协议的扩展,MIME 协议指示 MIME 用户代理如何显示附加的文件.当 Internet Explorer 接收到头时,它会激活文件下载对话框, ...

  8. java 子类的同名方法_java 父类子类有同名方法时如何调用的实现

    父类引用默认调用子类重写的方法 如果父类的引用p指向了子类的实例,则通过这个引用p访问同名方法时,调用的是子类重写的方法. 父类引用p可以指向不同的子类,调用不同子类重写的不同的同名方法,进而达到类间 ...

  9. 在LINQ to SQL中使用Translate方法以及修改查询用SQL

    目前LINQ to SQL的资料不多--老赵的意思是,目前能找到的资料都难以摆脱"官方用法"的"阴影".LINQ to SQL最权威的资料自然是MSDN,但是M ...

  10. Java String intern()方法

    引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8 ...

最新文章

  1. 雍正继承帝位,给职场中的我们的启示 --- 我看电视剧《雍正王朝》
  2. Java学习笔记30
  3. DialogFragment源码分析
  4. 修改sga后oracle打不开的解决方法
  5. Python爬虫-利用代理IP访问网页(requests)
  6. VS2022+.NET6 RC1+C#10,.NET开发起飞
  7. android v4包自动导入吧,android如何导入v4包的源码
  8. html5 figure 标签
  9. java(娄娄)的表白代码
  10. 化繁从简,别让思维打了结
  11. 2009年最值得注意炒作题材
  12. 荒野行动pc版显示连接不到服务器,荒野行动PC版连接不上服务器怎么办 进不去游戏...
  13. 解决Cipher Suites导致的“未能创建 SSL/TLS 安全通道”异常问题
  14. 2022081班李亚楠20220902
  15. 记一次图片编辑工具pinta二进制包的安装踩坑过程
  16. 【读书笔记】销售运营-策略制定的6大原则及5个常用工具
  17. Java实现二阶魔方旋转
  18. mysql系统设计论文_毕业论文管理系统的设计与实现(MyEclipse,MySQL)
  19. 攻防世界007 伪造xff_referer
  20. php fpm iamp,基于IAMP的WEB安全模型

热门文章

  1. drupal 执行.php文件,Drupal7.xPHP代码执行漏洞分析
  2. Unity 2D 打地鼠游戏制作过程总结
  3. java求100以内的素数
  4. 链接测试工具-Xenu
  5. hover和active的区别
  6. 【机器学习】【Apriori算法-1】Apriori算法原理详解 + 示例展示数学求解过程
  7. 网络编程学习路线计划
  8. svn访问路径提示Unable to connect to a repository at url
  9. dos攻击的服务器修复,被dos攻击怎么解决
  10. 文兵生日--2010-12-1