java - JComponent 未正确绘制

标签 java swing

我正在尝试将组件添加到我的 JPanel,但是它们的大小不正确且位置不正确。这是我的组件代码。

button = new JButton();
button.setSize(100, 100);
button.setLocation(400, 400);
button.setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
vm.panel.add(button);

它也在我正在绘制的其他东西后面,所以它不可见(这就是为什么我将光标设为十字线,以查看我的按钮在哪里)。这就是我画的。

g.drawImage(ImageIO.read(getClass().getResourceAsStream("/background.jpg")), 0, 0, vm.panel.getWidth(), vm.panel.getHeight(), null);
g.setColor(Color.WHITE);
g.fillRoundRect(200, 200, 880, 560, 100, 100);
g.setColor(Color.BLACK);
g.setFont(new Font("Arial", Font.PLAIN, 48));
g.drawString("Login", 575, 300);

最佳答案

however the size and location for the button aren't set correctly.

JPanel 的默认布局管理器是 FlowLayout。布局管理器将确定按钮的大小和位置。

因此,请使用适当的布局管理器来让按钮按您想要的方式显示。

例如,您只想将按钮显示在面板中央,您可以使用 GridBagLayout。

panel.setLayout( new GridBagLayout() );
panel.add(button, new GridBagConstraints());

阅读 Layout Managers 上的 Swing 教程了解更多信息和示例。

关于java - JComponent 未正确绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37502299/

相关文章:

java - Java中静态字符串常量所需的内存空间?

java - 如何布局? (JFrame、JPanel 等)

java - 如何使 JTextarea 中的特定文本不可编辑

java - 我可以向 JFrame 添加 CSS 文件吗?

java - 如何使用 GSON 反序列化 Map<String, Object>

java - Springfox swagger继承支持

java - 停止媒体播放器

java - AppiumDriver 给出空指针异常

java - JTable 搜索结果列表

java - Swing MigLayout无法增长填充列以填充容器长度