【问题标题】:Java text on buttons is not displayed不显示按钮上的 Java 文本
【发布时间】:2019-07-05 20:35:45
【问题描述】:

我正在制作简单的 Java swing 应用程序,但某些按钮上的文本未显示。

其中一个 JButton 带有文本“清除”并显示其文本,但我尝试将其他按钮的文本设置为“更改颜色”、“写入”、“c”、“w”,但没有一个显示这个文本,甚至不是“...”。

这部分(不是实际的)代码在扩展JFrame的类的构造函数中:

/* JPanel */ panel = new JPanel();
/* JButton */ testButton1 = new JButton("Change Color");
/* JButton */ testButton2 = new JButton("c");
panel.add(testButton);

/* this. */ pack();

同样,奇怪的是文本只显示在一个按钮上,它的创建方式与其他按钮相同。

【问题讨论】:

  • 其创建方式与其他人相同。 - 发布您的minimal reproducible example 以展示问题。那就是创建一个带有两个 JButton 的 JFrame,每个 JButton 都有不同的文本来演示您的问题。以及为什么您的代码显示了 JPanel 的创建,但您从未向面板添加任何组件。如果没有适当的“MRE”,我们真的无法判断您在做什么
  • 我的猜测是你一直在向框架添加按钮,这将不起作用,因为默认情况下 JFrame 使用 BoderLayout 并且默认情况下组件被添加到 BorderLayout.CENTER。但是,只能将一个组件添加到 CENTER。您需要先将按钮添加到面板,然后将面板添加到框架中。阅读 Layout Managers 上的 Swing 教程,了解 Swing 基础知识。
  • 当我将按钮移动到其他自定义 JPanel 类时,文本出现了。

标签: java swing text label jbutton


【解决方案1】:

我在这里建立一个例子。

import java.awt.FlowLayout;   
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DisplayTest {

    public static void main(String[] args) {

        run(new Display(), 400, 300);
    }

    public static void run(JFrame jFrame,int width,int height) {
        jFrame.setDefaultCloseOperation(Display.EXIT_ON_CLOSE);
        jFrame.setSize(width, height);
        jFrame.setVisible(true);
        jFrame.setLayout(new FlowLayout());
    }
}

class Display extends JFrame{

    JPanel panel = new JPanel();
    JButton testButton = new JButton("Change Color");
    JButton clearButton = new JButton("clear");

    public Display() {
        add(testButton);
        add(clearButton);
        pack();
    }       
}

注意,BorderLayout 会让后面的组件替换前面的,flowLayout 会显示你添加的所有组件。

【讨论】:

  • 感谢您的回答,但实际按钮(它们的边框,您可以单击它们)显示,但它们的文本没有。
  • 在我的电脑上很好用,在其他电脑上应该也很好用。也许你可以改变一些配置,比如jdk版本再测试一下。我的jdk是1.7版本,电脑系统是windows。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-24
  • 2013-01-18
  • 1970-01-01
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
相关资源
最近更新 更多