单击按钮时,不会调用下一个 activity
When button clicked, next activity don't get called
请帮帮我。我是 java 的初学者。这是我的 StartUp_page 按钮代码。单击 ok
按钮时,它应该调用 AdminLogin。它显示 1 但没有调用 AdminLogin。
StartUp_page
btnOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String input = textField.getText();
if (input.equals("1"))
{
AdminLogin login=new AdminLogin();
login.setVisible(true);
setVisible(false);
System.out.println(input);
//dispose();
}
else
{
System.out.println("2"); }
}
管理员登录
package GUI;
import java.awt.EventQueue;
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.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class AdminLogin extends JFrame{
private JTextField textField;
private JTextField textField_1;
private JPanel contentPanel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AdminLogin frame = new AdminLogin();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public AdminLogin() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,350,300);
contentPanel= new JPanel();
contentPanel.setBorder(new EmptyBorder(5,5,5,5));
setContentPane(contentPanel);
contentPanel.setLayout(null);
JLabel lblName = new JLabel("Name");
lblName.setBounds(53, 69, 46, 14);
contentPanel.add(lblName);
textField = new JTextField();
textField.setBounds(119, 66, 121, 20);
contentPanel.add(textField);
textField.setColumns(10);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(53, 128, 46, 14);
contentPanel.add(lblPassword);
textField_1 = new JTextField();
textField_1.setBounds(119, 125, 121, 20);
contentPanel.add(textField_1);
textField_1.setColumns(10);
JButton btnNewButton = new JButton("OK");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnNewButton.setBounds(211, 183, 89, 23);
contentPanel.add(btnNewButton);
}
public void setVisible(boolean b) {
// TODO Auto-generated method stub
}
}
基本问题是,您 AdminLogin
class 从 JFrame
扩展,但从 class 中创建 JFrame
的第二个实例,那么实际显示的是哪一帧?!就个人而言,我首先将 extends JFrame
替换为 extends JPanel
,然后将面板简单地添加到 JFrame
或 JDialog
的实例中,如 required
你真的应该避免使用 null
布局,像素完美布局是现代 ui 设计中的一种错觉。影响组件个体大小的因素太多,none 是您可以控制的。 Swing 旨在与核心的布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正
查看 Laying Out Components Within a Container 了解一些详细信息。
您可能还想看看 The Use of Multiple JFrames, Good/Bad Practice? and How to Make Dialogs and How to Use CardLayout 以了解有关替代方案的一些想法
请帮帮我。我是 java 的初学者。这是我的 StartUp_page 按钮代码。单击 ok
按钮时,它应该调用 AdminLogin。它显示 1 但没有调用 AdminLogin。
StartUp_page
btnOk.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String input = textField.getText();
if (input.equals("1"))
{
AdminLogin login=new AdminLogin();
login.setVisible(true);
setVisible(false);
System.out.println(input);
//dispose();
}
else
{
System.out.println("2"); }
}
管理员登录
package GUI;
import java.awt.EventQueue;
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.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;
public class AdminLogin extends JFrame{
private JTextField textField;
private JTextField textField_1;
private JPanel contentPanel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
AdminLogin frame = new AdminLogin();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public AdminLogin() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,100,350,300);
contentPanel= new JPanel();
contentPanel.setBorder(new EmptyBorder(5,5,5,5));
setContentPane(contentPanel);
contentPanel.setLayout(null);
JLabel lblName = new JLabel("Name");
lblName.setBounds(53, 69, 46, 14);
contentPanel.add(lblName);
textField = new JTextField();
textField.setBounds(119, 66, 121, 20);
contentPanel.add(textField);
textField.setColumns(10);
JLabel lblPassword = new JLabel("Password");
lblPassword.setBounds(53, 128, 46, 14);
contentPanel.add(lblPassword);
textField_1 = new JTextField();
textField_1.setBounds(119, 125, 121, 20);
contentPanel.add(textField_1);
textField_1.setColumns(10);
JButton btnNewButton = new JButton("OK");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
}
});
btnNewButton.setBounds(211, 183, 89, 23);
contentPanel.add(btnNewButton);
}
public void setVisible(boolean b) {
// TODO Auto-generated method stub
}
}
基本问题是,您 AdminLogin
class 从 JFrame
扩展,但从 class 中创建 JFrame
的第二个实例,那么实际显示的是哪一帧?!就个人而言,我首先将 extends JFrame
替换为 extends JPanel
,然后将面板简单地添加到 JFrame
或 JDialog
的实例中,如 required
你真的应该避免使用 null
布局,像素完美布局是现代 ui 设计中的一种错觉。影响组件个体大小的因素太多,none 是您可以控制的。 Swing 旨在与核心的布局管理器一起工作,丢弃这些将导致无穷无尽的问题和问题,您将花费越来越多的时间来尝试纠正
查看 Laying Out Components Within a Container 了解一些详细信息。
您可能还想看看 The Use of Multiple JFrames, Good/Bad Practice? and How to Make Dialogs and How to Use CardLayout 以了解有关替代方案的一些想法