JPanel什么时候绘制(或重绘)其子组件?

我有一个使用自定义UI委托绘制的JButton(CustomButtonUI扩展BasicButtonUI)。 CustomButtonUI的paint()方法绘制带有圆角“抗锯齿”角的按钮,使外观尽可能“平滑”。 每当我将鼠标拖到按钮上时,按钮的“抗锯齿”边缘就会消失。 这使按钮边缘看起来“像素化”。 但是,一旦我添加了一行代码来重新绘制按钮的父级,即使我将鼠标拖到按钮上,抗锯齿也会启动。 现在,我的问题涉及到这是一个好主意吗? 我会从子组件重绘父组件。 我想知道这是否会导致重绘的循环? 如果父级尝试重绘其子级并且子级尝试重新绘制其父级 – 那么我假设我们正在讨论循环。 我附上了我的代码作为参考。 任何评论都非常欢迎! public class JCustomButtonUI extends BasicButtonUI { @Override public void installUI(JComponent c) { super.installUI(c); AbstractButton b = (AbstractButton) c; b.setBorderPainted(false); } @Override public void paint(Graphics g, JComponent c) { //Cast the Graphics instance to a Graphics2D instance. Graphics2D g2d = (Graphics2D) g; JButton […]

JDBC连接错误:无法识别的时区

使用JDBC连接到mysql数据库时出现此错误。 Database.getConnection() Error –>The server time zone value ‘EEST’ is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support. 那是我的连接代码。 public static Connection getConnection(){ try { […]

appengine endpoint无法检索状态为500的API配置

我用epms 0.0.0.0在eclipse中运行appengine本地开发服务器 当我尝试访问任何方法时,我收到以下错误。 如果我尝试访问api explorer,我会得到同样的错误 http://localhost:8888/_ah/api/explorer 注意:我刚刚将我的应用引擎服务器更新为java 7。 有谁知道如何解决这个问题? java.io.IOException: Failed to retrieve API configs with status: 500 at com.google.api.server.spi.tools.devserver.ApiServlet.getApiConfigSources(ApiServlet.java:102) at com.google.api.server.spi.tools.devserver.ApiServlet.initConfigsIfNecessary(ApiServlet.java:67) at com.google.api.server.spi.tools.devserver.RestApiServlet.service(RestApiServlet.java:117) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at […]

从实例引用Java中的静态方法/变量

任何人都可以向我解释为什么java允许您从实例访问静态方法和成员? 一个不好的例子,如果我有一个名为RedShape的对象并且它有一个名为getColor()的静态方法返回“red”,为什么java允许你从RedShape实例调用静态方法? 对我来说,这似乎违反了OO语言设计的一些核心概念。 至少,它应该带有编译器警告。 提前致谢。 编辑: 特别是,我问你什么时候有类似的东西 RedShape test = new RedShape(); test.getColor(); 其中getColor是RedShape类的静态方法。 这没有任何意义,它是允许的,并没有通过javac在命令行上给出编译器警告。 我看到它“强烈气馁”,但很奇怪是否有一个技术或合理的理由背后为什么它被允许在“因为C ++允许它”之外。

Java安全会话

无论何时进行身份validation,您的应用程序都应更改其使用的会话标识符。 这有助于防止某人设置会话,复制会话标识符,然后欺骗用户使用会话。 由于攻击者已经知道会话标识符,因此他们可以在用户登录后使用它来访问会话,从而为其提供完全访问权限。 这种攻击被称为“会话固定”等。 一旦用户登录系统,如何更改会话ID?

随机类表现奇怪吗?

在这段代码中: Random random = new Random(441287210); for(int i=0;i<10;i++) System.out.print(random.nextInt(10)+" "); } 每次输出为1 1 1 1 1 1 1 1 1 1 。 为什么是这样? Random应该是……好吧……随机? 我认为Random类使用System.nanoTime ,因此输出通常应该是随机的。 有人可以解释一下吗?

请求标头太大

我在日志中发现了几个IllegalStateExceptionexception: [#|2009-01-28T14:10:16.050+0100|SEVERE|sun-appserver2.1|javax.enterprise.system.container.web|_ThreadID=26;_ThreadName=httpSSLWorkerThread-80-53;_RequestID=871b8812-7bc5-4ed7-85f1-ea48f760b51e;|WEB0777: Unblocking keep-alive exception java.lang.IllegalStateException: PWC4662: Request header is too large at org.apache.coyote.http11.InternalInputBuffer.fill(InternalInputBuffer.java:740) at org.apache.coyote.http11.InternalInputBuffer.parseHeader(InternalInputBuffer.java:657) at org.apache.coyote.http11.InternalInputBuffer.parseHeaders(InternalInputBuffer.java:543) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.parseRequest(DefaultProcessorTask.java:712) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:577) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:380) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) |#] 有人知道配置更改来解决这个问题吗?

如何计算java.awt.geom.Area的区域?

我正在寻找一种方法来计算java.awt.geom.Area的任意实例的面积(以像素为单位)。 背景:我的应用程序中的Shape可能会重叠。 我想知道一个Shape与另一个Shape重叠多少。 Shape s可能会倾斜,旋转等。如果我有一个functionarea(Shape) (或Area ),我可以使用两个Shape的交集,如下所示: double fractionObscured(Shape bottom, Shape top) { Area intersection = new Area(bottom); intersection.intersect(new Area(top)); return area(intersection) / area(bottom); }

旋转Image对象

我有一个方法getImage()需要旋转一个Image ,将它存储在一个新的变量中,然后返回该新的Image 。 这是我的尝试,图像似乎是空的或什么的。 它只是没有出现在屏幕上: public Image getImage() { buffImage.createGraphics().rotate(direction); return buffImage; } 当我拿出buffImage.createGraphics().rotate(direction); 图像在屏幕上绘制得很好,没有任何问题,但当然,没有旋转。

传递ArrayList报告会在每个项目中显示逗号

我通过参数将List of String传递给JasperReports报告。 String jasperFileName = “C:\\TestReportProcess.jasper”; Map params = new HashMap(); params.put(“List”, getMyListOfString()); JasperPrint jprint = (JasperPrint) asperFillManager.fillReport(jasperFileName, params, new JREmptyDataSource()); 当报告开始时,每个项目都显示逗号 item 1, item 2, item 3, item 4, etc etc 怎么能避免呢? 我的碧玉报告xml 这是我简单的xml报告,只有一个参数java.util.Arraylist