Я разрабатываю интерфейс, чтобы пользователь мог изменить текущий пароль. Когда пользователь нажимает кнопку JButton, он отображает поле пароля, в котором он вводит свой пароль, что приводит к появлению другого поля пароля, в котором он повторно вводит свой пароль. После ввода обоих паролей унаследованный метод ChangePassword() изменяет статический метод суперкласса.
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.event.*;
import javax.swing.table.DefaultTableModel;
public class studentDataBase {
private static Object[] columns = {"Period", "IDs", "Name"};
studentDataBase() {
JFrame window = new JFrame();
window.setAlwaysOnTop(true);
JButton addRow = new JButton("Add New Student");
addRow.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tabModel.addRow(new Object[columns.length]);
}
});
JPasswordField pWordBox1 = new JPasswordField();
JPasswordField pWordBox2 = new JPasswordField();
JLabel msg1 = new JLabel();
JLabel msg2 = new JLabel();
JLabel confirm = new JLabel("Password successfully saved");
JLabel inError = new JLabel();
pWordBox1.setBounds(1200, 580, 200, 20);
msg1.setBounds(1200, 550, 200, 20);
window.add(msg1);
inError.setBounds(1200, 720, 200, 20);
window.add(inError);
msg2.setBounds(1200, 620, 200, 20);
window.add(inError);
pWordBox2.setBounds(1200, 640, 200, 20);
confirm.setBounds(1200, 680, 200, 20);
JButton modPassword = new JButton("Change Admin Password");
modPassword.setBounds(1200, 500, 200, 30);
window.add(modPassword);
modPassword.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
msg1.setText("Please enter new password");
window.add(pWordBox1);
window.revalidate();
window.repaint();
pWordBox1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent d) {
try
{
int val1 = Integer.parseInt(new String(pWordBox1.getPassword()));
window.add(pWordBox2);
msg2.setText("Please Re-Enter Password");
pWordBox2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent n) {
int val2 = Integer.parseInt(new String(pWordBox2.getPassword()));
if(val1 == val2)
{
//changePassword(val1); updates static superclass variables
confirm.setText("Password successfully saved");
}
}
});
} catch(Exception e) {
inError.setText("Not a valid password. Try again!");
}
window.revalidate();
window.repaint();
}
});
}
});
window.pack();
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Каждый раз, когда я нажимаю JButton, экран становится белым, и JButton — единственное, что возвращается. Ни мой суперкласс, ни мой подкласс не используют нулевые макеты, но я использовал setBounds в обоих случаях. Является ли проблема макетами или вложенными addActionListeners?
Я разрабатываю интерфейс, чтобы пользователь мог изменить текущий пароль. Когда пользователь нажимает кнопку JButton, он отображает поле пароля, в котором он вводит свой пароль, что приводит к появлению другого поля пароля, в котором он повторно вводит свой пароль. После ввода обоих паролей унаследованный метод ChangePassword() изменяет статический метод суперкласса. [code]import javax.swing.*; import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.event.*; import javax.swing.table.DefaultTableModel; public class studentDataBase { private static Object[] columns = {"Period", "IDs", "Name"}; studentDataBase() { JFrame window = new JFrame(); window.setAlwaysOnTop(true); JButton addRow = new JButton("Add New Student"); addRow.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { tabModel.addRow(new Object[columns.length]); } }); JPasswordField pWordBox1 = new JPasswordField(); JPasswordField pWordBox2 = new JPasswordField(); JLabel msg1 = new JLabel(); JLabel msg2 = new JLabel(); JLabel confirm = new JLabel("Password successfully saved"); JLabel inError = new JLabel(); pWordBox1.setBounds(1200, 580, 200, 20); msg1.setBounds(1200, 550, 200, 20); window.add(msg1); inError.setBounds(1200, 720, 200, 20); window.add(inError); msg2.setBounds(1200, 620, 200, 20); window.add(inError); pWordBox2.setBounds(1200, 640, 200, 20); confirm.setBounds(1200, 680, 200, 20); JButton modPassword = new JButton("Change Admin Password"); modPassword.setBounds(1200, 500, 200, 30); window.add(modPassword); modPassword.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { msg1.setText("Please enter new password"); window.add(pWordBox1); window.revalidate(); window.repaint(); pWordBox1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent d) { try { int val1 = Integer.parseInt(new String(pWordBox1.getPassword())); window.add(pWordBox2); msg2.setText("Please Re-Enter Password"); pWordBox2.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent n) { int val2 = Integer.parseInt(new String(pWordBox2.getPassword())); if(val1 == val2) { //changePassword(val1); updates static superclass variables confirm.setText("Password successfully saved"); } } }); } catch(Exception e) { inError.setText("Not a valid password. Try again!"); } window.revalidate(); window.repaint(); } }); } }); window.pack(); window.setVisible(true); window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } [/code] Каждый раз, когда я нажимаю JButton, экран становится белым, и JButton — единственное, что возвращается. Ни мой суперкласс, ни мой подкласс не используют нулевые макеты, но я использовал setBounds в обоих случаях. Является ли проблема макетами или вложенными addActionListeners?
Я создаю программу покера для школьного проекта, используя Java 17. Я не могу использовать Java 8, так как система моей школы не позволяет мне это делать. Ошибка, которую я продолжаю получать: « ожидается», и она находится в строке, которая...
Можно ли создать кнопку J с помощью ActionListener и MouseListener
Это означает, что я создаю кнопку, а затем, когда я нажимаю ее (через actionListener), она меняет кадр, так что ПОСЛЕ нажатия кнопки я могу нажать в любом месте кадра, и...
Можно ли создать Jbutton как с ActionListener, так и с MouseListener
Это означает, что я создаю кнопку, а затем, когда я нажимаю ее (через actionListener), она меняет кадр, так что ПОСЛЕ нажатия кнопки я могу нажать в любом месте кадра, и...
Можно ли создать Jbutton с помощью ActionListener и Mouselistener
, чтобы я создавал кнопку, а затем, когда я нажимаю на нее (через ActionListener), она изменяет кадр, так что после того, как нажата кнопкой, я могу нажать в любом месте на кадре и...
Можно ли создать Jbutton с помощью ActionListener и Mouselistener
, чтобы я создавал кнопку, а затем, когда я нажимаю на нее (через ActionListener), она изменяет кадр, так что после того, как нажата кнопкой, я могу нажать в любом месте на кадре и...