gpt4 book ai didi

Java - 这是使用类来编辑标签的不良做法吗?

转载 作者:行者123 更新时间:2023-11-29 10:19:32 24 4
gpt4 key购买 nike

我正在构建一个更大的程序,我尝试了几种方法(所有方法都有效),但我目前很喜欢这种方法,尽管我不知道它的某些方面是否代表糟糕的编程习惯.本例中使用的代码只是为了理解,没有粘贴整个代码。

这段代码(粘贴在下方)创建了一个带有标签的新 ClassMain 对象和一个用于编辑标签的静态方法。 ClassEditor 是从 ClassMain 实例化的,它返回一个按钮。

现在我想知道这是否是一种不好的做法,我在按钮上有一个操作,当单击该按钮时,它会调用 ClassMain 中的静态方法并将标签设置为随机数。我想知道这是否是不好的做法的原因是因为我实际上并没有从 ClassMain 对象的直接实例化中调用该方法,我只是这样做:ClassMain.setLabel("");。而且我不完全确定这是什么。我有一个 ClassMain 的实例化,但如果我有多个,它还能工作吗?那么如何通过这种方式而不是使用引用变量来编辑创建对象的各个方面呢?如果我有多个类(class),它会产生问题吗?

抱歉,如果这些问题比较啰嗦,很难准确地问清楚。我提供了下面的代码,以便您了解我的意思。

PS:关于是否是多个 ClassMain 对象的问题,我创建了另一个,两个窗口中的两个按钮只更新了一个标签。为什么是这样?这是否意味着如果用于一个实例化不是坏习惯,但如果用于更多实例化就不好了?我希望有人能帮我解决这些问题!

ClassMain:

import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;


public class ClassMain extends JFrame {

private static JLabel l;

public static void main(String[] args) {
new ClassMain();
}

public ClassMain() {
super("This is my app");
setSize(450,80);
setLayout(new GridLayout(0,2));
l = new JLabel("Hi");

ClassEditor ce = new ClassEditor();

add(l);
add(ce.getButton());

setVisible(true);
}

public static void setLabel(String stringA) {
l.setText(stringA);
}

}

类编辑器:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;


public class ClassEditor implements ActionListener {

public ClassEditor() {
ClassMain.setLabel("Click the button for a random number!");
}

public JButton getButton() {
JButton b = new JButton("Click me!");
b.addActionListener(this);
return b;
}

public void actionPerformed(ActionEvent arg0) {
int i = (int) (Math.random()*10);
ClassMain.setLabel("Random Number: "+i);
}

}

非常感谢任何能帮助我的人,非常感谢。只是尝试学习和理解良好做法以及它们为何有效。

最佳答案

我可能不会使用静态方法和变量,而是像这样简单地重写它(我也更改了名称 - 一个好的做法是以每个人都知道其含义的方式命名所有内容):

ClassMain:

import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;


public class ClassMain extends JFrame {

private JLabel label;

public static void main(String[] args) {
new ClassMain();
}

public ClassMain() {
super("This is my app");
setSize(450,80);
setLayout(new GridLayout(0,2));
label = new JLabel("Hi");

ClassEditor classEditor = new ClassEditor(this);

add(label);
add(classEditor.getButton());

setVisible(true);
}

public void setLabel(String text) {
label.setText(text);
}

}

类编辑器:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;


public class ClassEditor implements ActionListener {

private ClassMain classMain;

public ClassEditor(ClassMain classMain) {
this.classMain = classMain;
classMain.setLabel("Click the button for a random number!");
}

public JButton getButton() {
JButton button = new JButton("Click me!");
button.addActionListener(this);
return button;
}

public void actionPerformed(ActionEvent event) {
int i = (int) (Math.random()*10);
classMain.setLabel("Random Number: "+i);
}

}

关于Java - 这是使用类来编辑标签的不良做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9337184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com