我在以下声明中收到错误
public class project {
JFrame start ;
JButton submit;
JButton cancel ;
JButton fp ;
JTextField username;
JPasswordField pass ;
JLabel uname ;
JLabel pawd ;
project()
{
start = new JFrame("Project");
submit = new JButton("Submit");
cancel = new JButton("Cancel");
fp = new JButton("Forgot Password ?") ;
uname = new JLabel("Username");
pass = new JPasswordField();
pawd = new JLabel("Password");
username = new JTextField();
start.setBounds(300,400,900,900);
start.setResizable(true);
start.setVisible(true);
uname.setBounds(180,200,80,25);
pawd.setBounds(230,225,80,25);
submit.setBounds(250,350,90,25);
cancel.setBounds(3400,350,90,25);
username.setBounds(300,200,100,25);
pass.setBounds(300,230,100,25);
fp.setBounds(420,215,125,25);
start.add(submit);
start.add(cancel);
start.add(fp);
start.add(username);
start.add(pass);
start.add(username);
start.add(uname);
start.add(pawd);
submit.addActionListener(new ActionListener (){
public void actionPerformed(ActionEvent ae){
submitperformed(ae);
}
});
}
public void submitperformed(ActionEvent ae)
{
if((username.getText()).equals("root") && (pass.getPassword().equals("11223344")))
{
start.setVisible(false);
}
else
JOptionPane.showMessageDialog( null,"Wrong Username or Password","Error Mesage", JOptionPane.ERROR_MESSAGE);
}
public void cancelperformed(ActionEvent ae)
{
System.exit(0);
}
public static void main(String []s)
{
project a = new project();
}
Run Code Online (Sandbox Code Playgroud)
}
不兼容的类型:框架"项目"无法转换为组件!
我在这里的'JOptionPane.showConfirmDialog()的第一个参数中得到了一个类似的问题? 但它有点太复杂了.现在,根据老师告诉我的内容,我们将当前类的对象作为参数传递,代替我通过它的位置.但"这个"也是这个工作.那么上面提到的错误是什么意思?谁能解释这个比上面的链接?
这是整个代码.实际上截至目前,我还不知道你所谈论的组件概念.我听过几次.它是一个类还是一个包?你能不能说一下?当我们应该提供组件参数时,应该感激并且null如何工作?
另一件事 !!我附上了上述代码结果的快照.忽略按钮和用户名标签.只需注意密码标签.现在不是根据我设置界限的位置.无论我设定什么界限,它的位置都不会改变.它令人沮丧,我不知道什么导致了这个问题.是否与在设置边界之前添加标签和按钮或类似的东西有关?你能看看它并找出发生了什么吗?
您的当前对象(由this参数引用)不会扩展AWT或Swing组件,这就是您正在看到与消息所说的完全相同的错误的原因.这涉及几个问题,包括1)理解什么this意思,2)(有时)理解它在内部类中的含义,3)理解方法参数必须是方法声明中参数的类型或子类型. .
解决方案很简单:确保将引用传递给GUI组件或传递null到该方法的第一个参数.如果将JOptionPane用作另一个主窗口的对话窗口,最好避免使用null.
请注意,如果您需要更多帮助,特别是如果此答案无法解决您的问题,那么请告诉我们您的问题的更多信息并显示更多代码,尤其是围绕JOptionPane方法调用的代码,并且还显示类声明我们可以看到你的班级是什么类型.
使用Swing组件作为JOptionPane的第一个参数,这里start可以很好地工作:
JOptionPane.showMessageDialog(start, "Wrong Username or Password","Error Mesage",
JOptionPane.ERROR_MESSAGE);
Run Code Online (Sandbox Code Playgroud)
也,
例如,使用GridBagLayout:
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.Arrays;
import javax.swing.*;
public class Project2 {
private static final int COLUMN_COUNT = 10;
private static final int I_GAP = 3;
private JTextField userNameField = new JTextField();
private JPasswordField passwordField = new JPasswordField();
private JPanel mainPanel = new JPanel(new GridBagLayout());
public Project2() {
userNameField.setColumns(COLUMN_COUNT);
passwordField.setColumns(COLUMN_COUNT);
GridBagConstraints gbc = getGbc(0, 0, GridBagConstraints.BOTH);
mainPanel.add(new JLabel("User Name:"), gbc);
gbc = getGbc(1, 0, GridBagConstraints.HORIZONTAL);
mainPanel.add(userNameField, gbc);
gbc = getGbc(0, 1, GridBagConstraints.BOTH);
mainPanel.add(new JLabel("Password:"), gbc);
gbc = getGbc(1, 1, GridBagConstraints.HORIZONTAL);
mainPanel.add(passwordField, gbc);
}
public static GridBagConstraints getGbc(int x, int y, int fill) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.insets = new Insets(I_GAP, I_GAP, I_GAP, I_GAP);
gbc.fill = fill;
return gbc;
}
public String getUserName() {
return userNameField.getText();
}
public char[] getPassword() {
return passwordField.getPassword();
}
public JComponent getMainPanel() {
return mainPanel;
}
private static void createAndShowGui() {
Project2 project2 = new Project2();
int input = JOptionPane.showConfirmDialog(null, project2.getMainPanel(),
"Login", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if (input == JOptionPane.OK_OPTION) {
if (project2.getUserName().equals("root") &&
Arrays.equals(project2.getPassword(), "11223344".toCharArray())) {
// you're good
} else {
JOptionPane.showMessageDialog(project2.getMainPanel(),
"error message", "Error Title", JOptionPane.ERROR_MESSAGE);
}
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3462 次 |
| 最近记录: |