我试图创建一个超级简单的组件,但它没有出现。
组件类别:
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JComponent;
public class Player extends JComponent{
public Player()
{
}
public void paint(Graphics g)
{
g.setColor(Color.green);
g.fillRect(40,40,150,150);
}
}
面板类我将其添加到:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.JPanel;
public class Game extends JPanel{
public Game()
{
this.setBackground(Color.yellow);
this.setPreferredSize(new Dimension(500,500));
Player p = new Player();
this.add(p);
}
}
JFrame:
import javax.swing.JFrame;
public class Launcher {
public static void main(String[] args) {
JFrame frame = new JFrame("Key Collector Demo");
frame.add(new Game());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
}
}
唯一出现的是黄色背景。JFrame和JPanel工作正常;在构建jcomponents时,这个问题一直发生在我身上。我错过了什么?
任何帮助都将不胜感激!
用于绘制组件的坐标在该组件的空间中定义。
如果您这样做:
public void paint(Graphics g)
{
g.setColor(Color.green);
System.out.println(getSize());
g.fillRect(40,40,150,150);
}
您将看到,在尝试绘制它的时候,它的大小是1x1
。因此,从40,40
绘制它显然会将其从组件的可见区域中移除。
现在将方法更改为:
public void paint(Graphics g)
{
g.setColor(Color.green);
System.out.println(getSize());
setSize(45, 45);
g.fillRect(40,40,150,150);
}
现在你们可以看到一个小的实心矩形。这是因为您强制大小为45x45,现在组件的空间中显示5个像素,而其余部分仍在该区域之外。
我有一个从JFrame扩展的类。我在它里面有多个JLayeredPanes。我想从一个JLayeredPane切换到另一个JLayeredPane。因为我所做的是; 像 向新的JLayeredPane添加组件并设置边界 下面是一个包含整个java文件的zip文件http://s000.tinyupload.com/index.php?file_id=33381866612121130517
我在这里读这篇社论:https://www.geeksforgeeks.org/given-an-array-arr-find-the-maximum-j-i-such-that-arrj-arri/我无法理解O(n)解是如何工作的。描述它的段落似乎与准则相矛盾。我已经查看了一个示例阵列,手动确保这似乎是可行的,但对我来说,这似乎一点都不直观。 如果有人在解决编程难题方面更有经验,他会愿意解释这是
我正在尝试在一些带有Tomcat服务器的Linux机器上使用AWS EC2上的应用程序。之前,我在局域网上使用Infinispan应用程序,并使用UDP多播进行JGroups成员发现。EC2不支持UDP多播,这是Infinispan用于检测集群中运行的节点的默认节点发现方法。我研究了使用S3\u-PING协议,但我还没有弄清楚为什么它不起作用。 有人知道问题出在哪里吗? 这是我的配置文件:1. A
*J一个Java程序动态分析工具。这个工具包是为两个主要的目的服务: 1.帮助收集Java程序动态执行数据 2.提供一个框架来快速简便地分析这些收集到的数据。
我有一个方法,如果名称与正则表达式匹配,则必须返回true,如果名称具有特殊字符或数字,则必须返回null。 这是方法: 这是对无法通过的方法的测试:
问题内容: 在我的实际项目中,这是我修改后的小程序,偶然发生。 我不知道为什么它给输出 10 吗? 之后,我放了两个零,仍然给出输出10。 然后我将 012 更改 为0123 ,现在输出83? 谁能解释为什么? 问题答案: 比我将012更改为0123,现在输出为83? 因为它被当作八进制基数(8),因为该数字的前导数字为0。因此,它对应的十进制值为10。 012: 0123: