我有以下代码用于创建包含某些等级的下拉菜单,我需要能够获得用户从菜单中选择的任何排名,以便我可以在其他类中使用答案
package userInterface;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
@SuppressWarnings("serial")
public class gui extends JFrame implements ActionListener {
String[] messageStrings = { "RANK 1", "RANK 2", "RANK 3" };
JComboBox cmbMessageList = new JComboBox(messageStrings);
JLabel user = new JLabel();
JLabel item1;
String user_rank;
public static void main(String[] args) {
gui newguiGui = new gui();
newguiGui.setVisible(true);
}
public gui() {
setLayout(new FlowLayout());
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cmbMessageList.setSelectedIndex(1);
cmbMessageList.addActionListener(this);
add(cmbMessageList);
add(user);
setLayout(new FlowLayout());
setLayout(new FlowLayout());
item1 = new JLabel("enter the street you are on here");
item1.setToolTipText("In this box you enter if you are: pre flop, flop, turn or river");
// adding items to the interface
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if (e.getSource() == cmbMessageList) {
JComboBox cb = (JComboBox) e.getSource();
String msg = (String) cb.getSelectedItem();
switch (msg) {
case "RANK 1":
user_rank = "RANK 1";
break;
case "RANK 2":
user_rank = "RANK 2";
break;
case "RANK 3":
user_rank = "RANK 3";
break;
}
}
}
}
提前致谢
如果其他类不在同一包中,则可以公开String user_rank
:
public String user_rank;
然后你可以访问它 gui.user_rank
.
也:
- 请改用
userRank
来遵循 Java 命名约定。 - 出于与上述相同的原因,使用
Gui
作为类名。 - 立即将
e.getSource() == cmbMessageList
替换为e.getSource().equals(cmbMessageList)
。 - 您无需给
setLayout(new FlowLayout())
打电话 3 次。
另一种方法是添加一个(公共或默认访问)方法,该方法将返回user_rank
并让另一个类调用该方法。在这种情况下,您可以使变量甚至private
。
你可以把它存储在一个变量中。并通过调用 getter 方法来使用它。