background

问题描述 投票:0回答:0
aim

在其中渲染一个带有文本的面板。

我尝试了什么 使用setbounds移动文本 - 这有效,文本确实呈现,但是它不适用于gridlayout,因此不符合所需的规格。

阅读有关jlabels gridlayout和渲染的文章和文档 - 尝试了示例 - 失败。

使用Intellij Debugger-结果显示Jlabel不是null,并且文本设置为正确的值,以及启用且可见的属性为真。 插入和减少gridlayout行和列 - 失败。 改变面板的大小 - 失败。

将前景颜色改变为绿色 - 失败的东西。

代码:

public class MainPanel extends JPanel { public MainPanel(JFrame frame) { setBounds(40,40,200,200); setBackground(Color.BLUE); JLabel label = new JLabel("Hello World", SwingConstants.CENTER); label.setFont(new Font("Tahoma", Font.PLAIN, 25)); label.setVisible(true); add(label); setLayout(new GridLayout(1, 1)); } }

    result
  • 结论 如您所见,面板确实呈现(蓝色正方形),但是其中没有文字。我很困惑,因为与此相似的代码在AORE项目上起作用,而且没有明显的原因这不起作用。
  • 我提到的提议本质上是可以的。证明:(显然您可以稍后将自己的班级分为顶级):
  • import java.awt.Color; import java.awt.EventQueue; import java.awt.Font; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; public class F extends JFrame { private void setGui() { try { setLocation(0, 100); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setContentPane(new MainPanel()); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { try { EventQueue.invokeAndWait(() -> { F f = new F(); f.setGui(); f.setSize(200, 200); f.setVisible(true); }); } catch (Exception e) { e.printStackTrace(); } } } class MainPanel extends JPanel { public MainPanel() { setLayout(new GridLayout(1, 1)); setBounds(40,40,200,200); setBackground(Color.BLUE); JLabel label = new JLabel("Hello World", SwingConstants.CENTER); label.setFont(new Font("Tahoma", Font.PLAIN, 25)); add(label); } }

java swing user-interface
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.