将表单的Java文本字段转换为新表单
我是Java新手,只想问一个简单的问题 我有我的第一个表单和一个文本字段,一旦我点击按钮,我就会在那里输入一个文本 新表单将出现,文本字段中的文本将成为新表单的标签 我尝试了这个代码,但它不起作用将表单的Java文本字段转换为新表单,java,swing,user-interface,jframe,label,Java,Swing,User Interface,Jframe,Label,我是Java新手,只想问一个简单的问题 我有我的第一个表单和一个文本字段,一旦我点击按钮,我就会在那里输入一个文本 新表单将出现,文本字段中的文本将成为新表单的标签 我尝试了这个代码,但它不起作用 public class Data extends javax.swing.JFrame { public Data() { initComponents(); FrmLogIn f = new FrmLogIn(); User.setText(f.UName.getT
public class Data extends javax.swing.JFrame {
public Data() {
initComponents();
FrmLogIn f = new FrmLogIn();
User.setText(f.UName.getText());
User.setVisible(true);
}
看到您的代码,您似乎没有包含事件处理部分(您需要包含它才能完成工作) 作为简要介绍,您需要在代码中执行以下操作:
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FrmLogIn f = new FrmLogIn();
User.setText(f.UName.getText());
f.setVisible(true);
}
}
注意:假设User
是JLabel
和UName
一个JTextField
而且
FrmLogIn
已经扩展了JFrame
,并且您已经设置了JFrame
有关事件处理的详细信息,请查阅
编辑2:
示例代码片段-您需要这样的东西(这只是一个粗略的例子,让您知道如何继续工作)
编辑3正如@madProgrammer所评论的-将
null
layout替换为FlowLayout
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.*;
import javax.swing.JTextField;
class FrmLogIn extends JFrame{
JLabel User;
public FrmLogIn() {
setLayout(new FlowLayout());
setSize(200,200);
User = new JLabel("");
// User.setBounds(20,30,100,40);
add(User);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class ForTest extends JFrame{
JButton enter;
JTextField UName;
public ForTest() {
setLayout(new FlowLayout());
setSize(300,300);
enter = new JButton("enter");
//enter.setBounds(20,20,100,30);
UName = new JTextField();
//UName.setBounds(40,80,60,30);
add(UName);
add(enter);
setVisible(true);
enter.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
FrmLogIn f = new FrmLogIn();
f.User.setText(UName.getText());
f.setVisible(true);
setVisible(false);
}
});
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ForTest();
}
}
有很多方法可以解决这个问题。您可以创建自己的
JDialog
来处理输入需求(在大多数情况下我可能会这样做),但是如果您想要的是更简单一点的东西,JOptionPane
提供了一个现成的对话框,它是高度可配置的
当然,没有什么可以阻止您混合这两个concpet(定制的JDialog
和JOptionPane
)
您可能希望通读并了解更多信息。是否包含事件侦听器?Swing?为了更快地获得更好的帮助,请发布一个。我只需要在文本框中获取另一种形式的文本1)再次发布一个SSCCE。该代码无法编译。2) 参见3)“不起作用”在帮助我们诊断问题方面的作用与国际空间站上的屏蔽门一样。你以为会发生什么?发生了什么事?例如。。登录表单当我登录一个新表单时会打开并说“欢迎,用户名”例如“登录表单”当我登录我的用户名时,一个新表单会打开并在标签上说“欢迎用户名”,我说我们明白你的意思,但很难预测你做了什么以及你想要什么-检查更新,我使用你的代码。。发生的事情是登录表也出来了。。但是我的jlabel在欢迎表中仍然没有appear@kelvzy等一下?用户是JLabel还是JTextField?@kelvzy,您是否设置了
JLabel
的边界并将其添加到帧中
public class TestLogin01 {
public static void main(String[] args) {
new TestLogin01();
}
public TestLogin01() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception ex) {
}
LoginPane loginPane = new LoginPane();
String userName = null;
boolean validUser = false;
int result = JOptionPane.CANCEL_OPTION;
do {
result = JOptionPane.showConfirmDialog(null, loginPane, "Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);
switch (result) {
case JOptionPane.OK_OPTION:
// Verify user details..
userName = loginPane.getUserName();
char[] password = loginPane.getPassword();
// Simple random test...
validUser = ((int) (Math.round(Math.random() * 1))) == 0 ? true : false;
if (!validUser) {
JOptionPane.showMessageDialog(null, "Inavlid username/password", "Error", JOptionPane.ERROR_MESSAGE);
}
break;
}
} while (!validUser && result != JOptionPane.CANCEL_OPTION);
if (result == JOptionPane.OK_OPTION) {
if (validUser) {
JOptionPane.showMessageDialog(null, "Welcome back valued user " + userName, "Welcome", JOptionPane.INFORMATION_MESSAGE);
}
}
}
});
}
public class LoginPane extends JPanel {
private JTextField userName;
private JPasswordField passwordField;
public LoginPane() {
userName = new JTextField(10);
passwordField = new JPasswordField(10);
setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 0;
gbc.anchor = GridBagConstraints.WEST;
add(new JLabel("User name: "), gbc);
gbc.gridy++;
add(new JLabel("Password: "), gbc);
gbc.gridy = 0;
gbc.gridx++;
gbc.fill = GridBagConstraints.HORIZONTAL;
add(userName, gbc);
gbc.gridy++;
add(passwordField, gbc);
}
public String getUserName() {
return userName.getText();
}
public char[] getPassword() {
return passwordField.getPassword();
}
}
}