当前位置: 首页 > 面试题库 >

Java-更改JLabel

巩才捷
2023-03-14
问题内容

我有一个称为Keys.java的按钮类,它将按钮面板返回到名为Control.java的类。我在Control.java中有一个JLabel,但是我想做的是在按下按钮时更改JLabel。您将如何去做?

我试过在Keys.java中设置一个字符串,该字符串根据按钮而变化,然后将JLabel的文本设置为等于该字符串,但似乎不起作用。

关于如何实现这一点的任何想法?


问题答案:

可能是您更新了错误的字符串或设置了不正确的标签文本。两者都是必需的。在下面的示例(使用您的名称)中,两个更新在按钮的中紧密结合actionPerformed()。这里显示了一种更宽松的耦合方法。

import java.awt.EventQueue;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

/** @see https://stackoverflow.com/questions/9053824 */
public class JavaGUI extends JPanel {

    private Control control = new Control();
    private Keys keys = new Keys("Original starting value.");

    public JavaGUI() {
        this.setLayout(new GridLayout(0, 1));
        this.add(keys);
        this.add(control);
    }

    private class Control extends JPanel {

        public Control() {
            this.add(new JButton(new AbstractAction("Update") {

                @Override
                public void actionPerformed(ActionEvent e) {
                    System.out.println("Command: " + e.getActionCommand());
                    keys.string = String.valueOf(System.nanoTime());
                    keys.label.setText(keys.string);
                }
            }));
        }
    }

    private class Keys extends JPanel {

        private String string;
        private JLabel label = new JLabel();

        public Keys(String s) {
            this.string = s;
            label.setText(s);
            this.add(label);
        }
    }

    private void display() {
        JFrame f = new JFrame("JavaGUI");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.add(this);
        f.pack();
        f.setLocationRelativeTo(null);
        f.setVisible(true);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {

            @Override
            public void run() {
                new JavaGUI().display();
            }
        });
    }
}


 类似资料:
  • 问题内容: 我上一些课: 而我的类加载器实现: 现在,我尝试更改当前线程中的默认类加载器: 并输出: 没有人 为什么?我怎样才能变成某个线程? 问题答案: 正如Marko Topolnik指出的那样,上下文类加载器供框架使用。要自己使用类加载器,您必须先调用,然后使用反射API创建A()的新实例。 您将无法直接在源代码中使用A或其方法,因为调用代码不知道A-它使用不同的类加载器。可以由常规类加载器

  • 13.2.3 更改Java版本 spring-boot-starter-parent选择相当保守的Java兼容性。如果遵循我们的建议并使用更高的Java版本,您可以添加一个java.version属性: <properties> <java.version>1.8</java.version> </properties>

  • 问题内容: 如标题中所示:可以肯定的是,我正在调试我的应用程序,因此在将字符串放入PreparedStatement变量中的地方,特殊字符更改为“?”。我实际上不知道在哪里搜索应该修复的东西,所以我不知道是否需要代码。无论如何,我会在这里放一些: 虽然在方法对象中调试“名称”字段是正确的,但是将其添加到stm变量后,它将其字符更改为“?”。 我已经找到了一个关于SO上类似西他那肽的话题,但是没有任

  • 问题内容: 我有一个班级,其显示设置设置为Java,现在我将其设置为,我知道我可以使用with 进行此操作,但是用班级进行清洁的最干净的方法是什么? 问题答案: 您 可以使用数组(MDC链接,MSDN链接) 来 执行操作,实际上是更改与类相关的样式规则,但是坦率地说,您最好拥有一个单独的样式来定义,然后删除该样式(如changelog所述)从元素开始,当您希望它们不再隐藏时。

  • 问题内容: 我怎样才能做到这一点?谢谢您的帮助 问题答案: 此答案也相同: 看到 JavaDoc:Normalizer.normalize(String,Normalizer.Form) JavaDoc:Normalizer.Form.NFD Sun Java教程:Normalizer的API) 示例代码: 输出: 这是一个时髦的弦

  • 问题内容: 我想更改使用Sun JDK打开JDK的Maven Java主页。我该怎么做 ? 非常抱歉。我忘了写下面的代码: 我的Java home默认路径已经是sun jdk。但是maven java home指出了openjdk。我只想为Maven修复它。 问题答案: 如果您使用的是Linux,请使用语法设置JAVA_HOME 。实际上,不仅是Maven。