Java 向类添加GUI
我想知道如何将GUI添加到我的程序中。我已经开始用Blue J创建一个java程序,该程序的第一个类是一个被其他类扩展的类 现在我也必须做一个GUI,但据我所知,我只能在GUI扩展类框架时实现一个接口。问题是我想为我的类创建一个GUI,它也有实例变量,所以有解决办法吗?我可以让我的第一个类成为一个接口而不需要对扩展做太多修改吗 代码:Java 向类添加GUI,java,user-interface,bluej,Java,User Interface,Bluej,我想知道如何将GUI添加到我的程序中。我已经开始用Blue J创建一个java程序,该程序的第一个类是一个被其他类扩展的类 现在我也必须做一个GUI,但据我所知,我只能在GUI扩展类框架时实现一个接口。问题是我想为我的类创建一个GUI,它也有实例变量,所以有解决办法吗?我可以让我的第一个类成为一个接口而不需要对扩展做太多修改吗 代码: 这是我的第一个类,也是大多数其他类的超类我建议首先使用netbeans。从那里,您可以轻松地选择预先创建的类,如Jframes。更容易学。您可以通过拖放按钮和您需
这是我的第一个类,也是大多数其他类的超类我建议首先使用netbeans。从那里,您可以轻松地选择预先创建的类,如Jframes。更容易学。您可以通过拖放按钮和您需要的任何东西从那里创建GUI 下面是一个youtube tut,用于在netbeans中创建GUI
如果您决定不使用netbeans,那么必须使用类创建swing容器来创建接口。我建议您学习如何使用swing。您将有几个不同的类一起交互。事实上,将创建和管理GUI的代码与执行底层逻辑和数据操作的代码分开是一种良好的做法。另一个建议: 了解JavaFX并从Oracle下载SceneBuilder: 在我的大学里,他们已经停止教Swing,开始教JavaFX,说JavaFX已经从Swing手中接过了王位 SceneBuilder是一个非常易于使用的拖放概念。它创建一个FXML文件,用于声明您的GUI程序 如何在GUI类中声明一个实例变量 如下图所示,您可以这样开始,注意您的应用程序应该能够将数据分发给其他类,例如,我更改了
getBasicStats()
以返回字符串,这样您就可以在任何地方使用您的应用程序类,我想这就是为什么您对GUI代码的放置位置感到困惑
public class PlayersGUI extends JFrame {
private static final long serialVersionUID = 1L;
private Players players; // instance variable of your application
private PlayersGUI() {
players = new Players();
initGUI();
}
private void initGUI() {
setTitle("This the GUI for Players application");
setPreferredSize(new Dimension(640, 560));
setLocation(new Point(360, 240));
JPanel jPanel = new JPanel();
JLabel stat = new JLabel(players.getBasicStats());
JButton attack = new JButton("Attack!");
attack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
players.addAttack(1);
}
});
JButton hugeAttack = new JButton("HUGE Attack!");
hugeAttack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
players.addAttack(10);
}
});
JButton defend = new JButton("Defend");
defend.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
players.addDefence(1);
}
});
JButton showStats = new JButton("Show stats");
showStats.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stat.setText(players.getBasicStats());
}
});
jPanel.add(stat);
jPanel.add(attack);
jPanel.add(hugeAttack);
jPanel.add(defend);
jPanel.add(showStats);
add(jPanel);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public static void main(String... args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
PlayersGUI pgui = new PlayersGUI();
pgui.pack();
pgui.setVisible(true);
}
});
}
}
为了更快地帮助发布源代码。@VaibhavG当然,抱歉您的类不必是UI类,请按照中所示创建UI并在其中使用您的类。不相关,但是,时髦的缩进使代码更难阅读。@a4l那么,我可以创建GUI,然后再将其与我的类关联吗?我将尝试完全误读您的文章,尽管这一点仍然存在,您尝试在Netbeans中执行的操作将更容易管理。不幸的是,我需要使用上面提到的BlueJAs,为GUI创建一个单独的类,并从GUI导入或导出所需的数据。您的操作方式完全取决于您正在设置或存储的数据类型。
public class PlayersGUI extends JFrame {
private static final long serialVersionUID = 1L;
private Players players; // instance variable of your application
private PlayersGUI() {
players = new Players();
initGUI();
}
private void initGUI() {
setTitle("This the GUI for Players application");
setPreferredSize(new Dimension(640, 560));
setLocation(new Point(360, 240));
JPanel jPanel = new JPanel();
JLabel stat = new JLabel(players.getBasicStats());
JButton attack = new JButton("Attack!");
attack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
players.addAttack(1);
}
});
JButton hugeAttack = new JButton("HUGE Attack!");
hugeAttack.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
players.addAttack(10);
}
});
JButton defend = new JButton("Defend");
defend.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
players.addDefence(1);
}
});
JButton showStats = new JButton("Show stats");
showStats.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
stat.setText(players.getBasicStats());
}
});
jPanel.add(stat);
jPanel.add(attack);
jPanel.add(hugeAttack);
jPanel.add(defend);
jPanel.add(showStats);
add(jPanel);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
}
public static void main(String... args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
PlayersGUI pgui = new PlayersGUI();
pgui.pack();
pgui.setVisible(true);
}
});
}
}