【问题标题】:Java Swing ignore text size on JButtonJava Swing 忽略 JButton 上的文本大小
【发布时间】:2015-11-23 19:01:37
【问题描述】:

有没有办法“忽略”按钮的文本是否适合,如果它不适合,它不会显示“...”?

我正在制作一个包含按钮网格的游戏,并且我使用国际象棋 unicode 字符作为这些按钮上的文本。使用小字体时,它们会显示出来,但它们确实很小。但是对于较大的字体,java“认为”它们不适合并将它们显示为“...”,甚至认为它们完全适合。

生成按钮的代码:

        jPanel.setLayout(new GridLayout(13, 13));
    tab = new JButton[13][13];  //Tablero
    for (int j = 0; j <= 12; j++) {
        for (int i = 0; i <= 12; i++) {

            JButton jButton = new JButton();
            jButton.setText("♟");
            jButton.setBackground(getColor(i, j));
            jPanel.add(jButton);
            tab[i][j] = jButton;
            //jButton.setFont(new Font("TimesRoman", Font.PLAIN, 14));
            jButton.setForeground(Color.pink);
        }
    }

【问题讨论】:

  • But with larger fonts, java thinks they wont fit and displays them as "..." even thought they would definitively fit. - 如果它们显示为“...”,则表示它不适合。不要对组件的首选大小进行硬编码,然后 Swing 会以首选大小绘制组件,这意味着图像将适合。
  • 不要设置大小或边界,或使用null 布局。在添加所有组件之后和调用setVisible(true)之前,一定要在你的GUI上调用pack()
  • @camickr 如果您不想硬编码它,因为没有为文本指定字体,那只会使它使用既不会显示的默认字体。这是你的意思吗?
  • 我猜边距太大,请参阅stackoverflow.com/a/5808226/5596109 了解如何解决。
  • 删除边框的错误解决方案。您仍在某处设置大小,并且您没有打包您的 GUI。我几乎可以保证这一点。

标签: java swing


【解决方案1】:

如果您看到“...”,则表示组件的大小太小而无法正确显示文本。这意味着您正在覆盖按钮的某些属性:

  1. 您正在使用空布局并手动指定大小
  2. 您正在使用布局,但您使用了 setPreferredSize()

在这些情况下,按钮将无法正确绘制。

你可以通过改变按钮的边距让棋子占据更多的按钮空间:

JButton button = new JButton(...);
button.setMargin( new Insets(5, 5, 5, 5) );

但您仍然需要解决上述两个问题之一,以便正确使用 Swing 布局。

【讨论】:

  • 或者他可能没有使用空布局,而是使用 JPanel 以某种方式限制 GridLayout 的大小。
猜你喜欢
  • 2014-03-09
  • 1970-01-01
  • 2011-06-29
  • 2010-09-26
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多