当我将Swing组件(比如JButton)添加到JPanel时,它会以“首选大小”呈现。
但是,首选的尺寸实际上比涂上的按钮要大。它周围似乎有一个看不见的边界。
下面是一个带有测试面板的简单框架:
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TestPanel pnl = new TestPanel();
frame.getContentPane().add(pnl);
frame.pack();
frame.setVisible(true);
public class TestPanel extends JPanel {
JButton btn1 = new JButton("Test1");
JButton btn2 = new JButton("Test2");
public TestPanel() {
this.add(btn1);
this.add(btn2);
}
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.RED);
Dimension dim = btn1.getPreferredSize();
g.drawRect(btn1.getX(), btn1.getY(), (int)(dim.getWidth()), (int)(dim.getHeight()));
}
}
我的问题是,我如何确定绘制按钮的宽度和高度,而不是JButton的PreferredSize?
非常感谢任何帮助,谢谢!
因为我实际上需要它来处理所有的Swing组件,下面是一个包含更多组件的屏幕快照。
我试图为下面的JSON创建一个swagger文档,但是我得到了下面的错误:带有“type: array”的模式需要一个同级“items:”字段 JSON: 有人能帮我得到这个JSON的招摇博士。 任何帮助都将不胜感激。
问题内容: 对不起,我进行了大量搜索,以查找这3个功能(绘画,重绘,paintComponent)之间如何相互作用,但我不知道。您能准确解释一下它们何时被调用(因为有时java会在没有我问他的情况下调用它),它们到底在做什么,它们之间有什么区别。谢谢 问题答案: 我不确定“ paint”,但是我可以解释repaint()和paintComponent()之间的关系。 根据我在Java方面的有限经验
例: “foo”和“bar”可以是任何字符串键,但它们在键集中应该是唯一的。 我知道,使用Swagger,我可以定义一个对象数组,但这给出了一个不同的API,因为那时我们将拥有如下内容: 我已经阅读了“开放API规范”-“添加地图数据类型支持#38”页面。据我了解,它推荐使用additionalProperties,但似乎并没有回答我的需求(或者说与我使用的Swagger UI 2.1.4不兼容)
我正在尝试验证swagger文件(实际上是我的gradle构建的一部分)。我曾经尝试过使用swagger解析器,但尽管它可以工作,如果swagger根本不进行解析,就会出现错误,但它似乎无法以这种方式捕获问题http://editor.swagger.io/#/做(这就是我要找的。) 当然,这是一个很常见的问题,一定有办法做到这一点? 我所尝试的: build.gradle: 有一些明显问题的简单
thoses线有什么问题 “data”属性应该是$ref中给出的模式类型的数组,但这是结果 好的,似乎正确的方法是tu把$ref直接放在items键下,我的问题是使用保留键“status”,那么,我如何在对象模式中使用保留键呢? 在我的客户机模式中,我将属性status放了两次,但我没有看到它已经存在,所以当我更改属性名时,它起作用了,我在想“status”可能是一个保留的关键字。
我想大摇大摆地发布一个json正文,就像这样: 目前,我有这样的定义: 但是数据是在URL中发送的。这里是Swagger提供的生成的curl: 我知道<code>查询</code>关键字不好,但我没有找到POST JSON正文的方法。我尝试了<code>formData</code>,但没有成功。