Rectangle rect = new Rectangle(50,50,700,300);
这应该很好,在访问成员变量之前是否创建了一个新的矩形实例?
800乘400这是一种奇怪的分辨率,800乘600更标准。
如果没有其他证据,我猜你已经覆盖了paint
方法,比如JFrame
并直接对其进行了绘制。
问题是,框架有装饰(例如边框和标题栏),这会占用框架内部的空间。。。
从技术上讲,这是正确的。长方形画在框架的中心,但由于框架的装饰,它看起来有点高。。。
相反,您应该在框架的内容区域上绘画。
在这里,矩形现在看起来正确居中。在我的测试中,我将第一个框架(坏)设置为800x400,我使第二个框架的内容窗格的首选尺寸为800x400,这使得框架的尺寸实际上为816x438,因为框架的装饰现在不在油漆区域内。
public class CenterOfFrame {
public static void main(String[] args) {
new CenterOfFrame();
}
public CenterOfFrame() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
}
new BadFrame().setVisible(true);
JFrame goodFrame = new JFrame();
goodFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
goodFrame.setContentPane(new PaintablePane());
goodFrame.pack();
goodFrame.setLocationRelativeTo(null);
goodFrame.setVisible(true);
}
});
}
public class BadFrame extends JFrame {
public BadFrame() {
setSize(800, 400);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
@Override
public void paint(Graphics g) {
super.paint(g);
paintTest(g, getWidth() - 1, getHeight() - 1);
}
}
public void paintTest(Graphics g, int width, int height) {
g.setColor(Color.RED);
g.drawLine(0, 0, width, height);
g.drawLine(width, 0, 0, height);
g.drawRect(50, 50, width - 100, height - 100);
}
public class PaintablePane extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(800, 400);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g); //To change body of generated methods, choose Tools | Templates.
paintTest(g, getWidth() - 1, getHeight() - 1);
}
}
}
这就是为什么不应该覆盖顶层容器的paint
方法的原因之一;)
我正在使用C 11和stl线程编写线程安全队列。WaitAndPop方法目前如下所示。我希望能够向WaitAndPop传递一些指示调用线程是否已被要求停止的东西。WaitAndPop如果等待并返回队列的一个元素,则应返回true,如果调用线程被停止,则应返回false。 有可能编写这样的代码吗?我习惯了Win32 WaitForMultipleObject,但找不到适用于这种情况的替代方案。 谢谢
我正在为学校的javascript入门课程做作业。我的概念是一种植物,当你给它浇水时它会生长,当它在x时间后没有水时它会变小。给植物加水使其生长是有效的,但我很难弄清楚如何使其在x时间内收缩。我被告知把它放在一个循环中,然后加上setInterval,但我是一个noob,所以我真的不知道该怎么办。此外,代码是荷兰语! 谢谢你抽出时间来帮助我!! 超文本标记语言 JAVASCRIPT:
我试图在我的Pdf文档上设置我的文本,但这不起作用。我怎么能通过iText7设置我的字体卡里布里?字体常量类只有有限的字体。
最近我在做反平工作人员的功能。我的代码是: 但今天我注意到,如果我在#公告中ping@Everyone,它会注意到我ping了staff。那么,如何才能为特定渠道破例呢?我必须在这段代码中添加什么?
我找到了这个密码
谢谢你的回应。我检查了位置,它被标识为与ANDROID_SDK_HOME环境路径相同的位置。它仍然说根是未定义的。我创建了一个到相同位置的ANDROID_SDK_ROOT环境路径,但它仍然没有定义。