登录类中初始化的Jtextfield需要在Clayout中访问
当单击登录按钮时。我想将 JTextfield 的数据与某些字符串进行比较并执行一些操作。
但它正在经历异常
“TextField未定义”
任何人都可以帮助我吗
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class CLayout {
JFrame frame = new JFrame("CardLayout demo");
JPanel panelCont = new JPanel();
JPanel log = new LoginView();
JPanel Img = new ImageGallery();
CardLayout cl = new CardLayout();
public CLayout() {
final String user = CLayout.getFieldText();
panelCont.setLayout(cl);
log.setLayout(new BoxLayout(log, BoxLayout.PAGE_AXIS));
Img.setLayout(new BoxLayout(Img, BoxLayout.PAGE_AXIS));
JButton loginButton = new JButton("login");
JButton registerButton = new JButton("register");
JTextField field2 = new JTextField(20);
loginButton.setBounds(10, 80, 80, 25);
log.add(loginButton);
registerButton.setBounds(180, 80, 80, 25);
log.add(registerButton);
panelCont.add(log, "1");
panelCont.add(Img, "2");
cl.show(panelCont, "1");
loginButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (user == "imagegallery") {
cl.show(panelCont, "2");
}
}
});
registerButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
cl.show(panelCont, "1");
}
});
frame.add(panelCont);
frame.setSize(800, 600);
frame.setTitle(" Image Gallery ");
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new CLayout();
}
});
}
}
class ImageGallery extends JPanel {
private ImageIcon myImage1 = new ImageIcon("Chrysanthemum.jpg");
private ImageIcon myImage2 = new ImageIcon("Desert.jpg");
private ImageIcon myImage3 = new ImageIcon("Jellyfish.jpg");
private ImageIcon myImage4 = new ImageIcon("principal.jpg");
private ImageIcon myImage5 = new ImageIcon("student.jpg");
private ImageIcon myImage6 = new ImageIcon("library.jpg");
private ImageIcon myImage7 = new ImageIcon("sports.jpg");
private ImageIcon myImage8 = new ImageIcon("class.jpg");
JPanel ImageGallery = new JPanel();
private ImageIcon[] myImages = new ImageIcon[8];
private int curImageIndex = 0;
public ImageGallery() {
ImageGallery.add(new JLabel(myImage1));
myImages[0] = myImage1;
myImages[1] = myImage2;
myImages[2] = myImage3;
myImages[3] = myImage4;
myImages[4] = myImage5;
myImages[5] = myImage6;
myImages[6] = myImage7;
myImages[7] = myImage8;
add(ImageGallery, BorderLayout.CENTER);
JButton PREVIOUS = new JButton("Previous");
JButton FILE = new JButton("File");
JButton EDIT = new JButton("Edit");
JButton NEXT = new JButton("Next");
JButton HELP = new JButton("Help");
JPanel Menu = new JPanel();
Menu.setLayout(new GridLayout(1, 5));
Menu.add(FILE);
Menu.add(EDIT);
Menu.add(PREVIOUS);
Menu.add(NEXT);
Menu.add(HELP);
add(Menu, BorderLayout.NORTH);
//register listener
PreviousButtonListener PreviousButton = new PreviousButtonListener();
NextButtonListener NextButton = new NextButtonListener();
//add listeners to corresponding componenets
PREVIOUS.addActionListener(PreviousButton);
NEXT.addActionListener(NextButton);
}
class PreviousButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (curImageIndex > 0 && curImageIndex <= 5) {
ImageGallery.remove(0);
curImageIndex = curImageIndex - 1;
ImageIcon TheImage = myImages[curImageIndex];
ImageGallery.add(new JLabel(TheImage));
ImageGallery.validate();
ImageGallery.repaint();
} else {
ImageGallery.remove(0);
ImageGallery.add(new JLabel(myImage6));
curImageIndex = 5;
ImageGallery.validate();
ImageGallery.repaint();
}
}
}
class NextButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (curImageIndex >= 0 && curImageIndex < 5) {
ImageGallery.remove(0);
curImageIndex = curImageIndex + 1;
ImageIcon TheImage = myImages[curImageIndex];
ImageGallery.add(new JLabel(TheImage));
ImageGallery.validate();
ImageGallery.repaint();
} else {
ImageGallery.remove(0);
ImageGallery.add(new JLabel(myImage1));
curImageIndex = 0;
ImageGallery.validate();
ImageGallery.repaint();
}
}
}
}
class LoginView extends JPanel {
JLabel userLabel = new JLabel("User");
JTextField userText = new JTextField(20);
JLabel passwordLabel = new JLabel("Password");
JPasswordField passwordText = new JPasswordField(20);
public LoginView() {
userLabel.setBounds(10, 10, 80, 25);
add(userLabel);
userText.setBounds(100, 10, 160, 25);
add(userText);
passwordLabel.setBounds(10, 40, 80, 25);
add(passwordLabel);
passwordText.setBounds(100, 40, 160, 25);
add(passwordText);
}
String getFieldText()
return userText.getText().toString();
}
最佳答案
你可以为它编写一个 setter/getter :
public String getTextFromTextField(){
return jTextField1.getText();
}
并简单地调用它。
关于java - 如何访问另一个类中的 JTextField 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24669849/