Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.185.199] |
|
Сообщ.
#1
,
|
|
|
ВОобщем у меня есть форма, на которой нарисован TextField, Label и кнопка. МНе нужно по нажатию кнопки получить текст введённый в текстовое поле.
Инетресно вот что - как получить данные из текстового поля, после того как событие на кнопке уже обработано? |
Сообщ.
#2
,
|
|
|
С помощью метода getText() Или вы что-то иное имеет в виду?
|
Сообщ.
#3
,
|
|
|
хм. дело в том, что getText не работает так, как я бы хотел.
btOk.addActionListener(new Authorize(tfId.getText(),tfPwd.getText(), conn)); отправляет программу вот сюда: class Authorize implements ActionListener { String Login,Password; Connection conn; public Authorize( String log , String pass, Connection connection ) { Login = log; Password = pass; conn = connection; MainFrame frame = new MainFrame(); if (Login == "1" && Password == "1") frame.Draw_Auth_Frame(); } Но if никогда не проходит проверку. Без постановки условия метод Draw_Auth_Frame() работает, => проблема в btOk.addActionListener(new Authorize(tfId.getText(),tfPwd.getText(), conn)); а конкретнее в получении текста из Текстовых полей. |
Сообщ.
#4
,
|
|
|
Разумеется, у вас ничего не работает - вызывать tfId.getText() следует непосредственно в методе обработки события.
|
Сообщ.
#5
,
|
|
|
Совершенно не представляю, как это реализовать в моём случае
|
Сообщ.
#6
,
|
|
|
Nort0n, подсказываю: на нажатие кнопки выполняется код в методе actionPerformed твоего класса Authorize, где в нем вызов tfId.getText()??? Правильно - нету. Вот поэтому у тебя и не работает В твоем случае в место строк log и pass в констурктор твоего класса Authorize нужно передать сами компоненты, из которых ты будешь считывать значения с помощью getText(). Хотя я бы сделал по-проще Не поленись, прочти пожалуйста часть туториала How to Write an Action Listener там в конце замечательные примеры
|
Сообщ.
#7
,
|
|
|
Дело в том, что я рисую и пытаюсь вызвать метод текстового поля внутри класса
public void Draw() throws SQLException { JTextField tfId = new JTextField("",6); JTextField tfPwd = new JTextField("",12); ... а получать метод надо внутри класса class Authorize extends MainFrame implements ActionListener { String Login,Password; Connection conn; public Authorize( String log, String pass, Connection connection ) { Login = log; Password = pass; conn = connection; MainFrame frame = new MainFrame(); if (Login == "1" && Password == "1") frame.Draw_Auth_Frame(); } вот в чём проблема, я не могу понять, как мне получить текстовое поле и его методо вне рисуемого класса. (я прочёл туториал с примерами, там всё понятно, спасибо, но там всё происходит внутри одного класса, различны только методы) Добавлено Цитата В твоем случае в место строк log и pass в констурктор твоего класса Authorize нужно передать сами компоненты, из которых ты будешь считывать значения с помощью getText(). 0_o я разве не их передаю? И как это можно сделать проще? Добавлено я кажется понял, о чём вы, сейчас реализовал. судя по всему, имелось ввиду : btOk.addActionListener(new Authorize(tfId, tfPwd, conn)); class Authorize extends MainFrame implements ActionListener { JTextField Login,Password; Connection conn; public Authorize( JTextField log, JTextField pass, Connection connection ) { Login = log; Password = pass; conn = connection; MainFrame frame = new MainFrame(); if (Login.getText().toString() == "1" && Password.getText().toString() == "1") frame.Draw_Auth_Frame(); } не работает к сожалению. Добавлено По хорошему, реализовывать стоит конешно вот так....НО, не работает не запускается frame.Draw_Auth_Frame(); да и строчки Dbg!!!!!! нет. class Authorize extends MainFrame implements ActionListener { JTextField Login,Password; Connection conn; public Authorize( JTextField log, JTextField pass, Connection connection ) { Login = log; Password = pass; conn = connection; } public void actionPerformed(ActionEvent event) { MainFrame frame = new MainFrame(); if (Login.getText() == "1" && Password.getText() == "1"){ frame.Draw_Auth_Frame(); System.out.println("Dbg!!!!!");} } |
Сообщ.
#8
,
|
|
|
Nort0n, фраза "не работает" мало что говорит... По клику вообще actionPerformed начианет выполнятся? Поставь отладочное сообщение в первой строчке actionPerformed. А вообще, лучше код выложи целиком
|
Сообщ.
#9
,
|
|
|
начинает.
ПРошу package Authorization; import java.awt.event.*; import java.awt.*; import javax.swing.*; import java.sql.*; public class Workspace { /** * @param args */ public static void main(String[] args) throws SQLException { MainFrame frame = new MainFrame(); frame.Draw(); } } class SimpleFrame extends JFrame { public SimpleFrame( int Width , int Height , String title ) { Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize(); setSize(Width,Height); setLocation((screensize.width - Width)/2 ,(screensize.height-Height)/2); setTitle(title); } } class Terminate implements ActionListener { public void actionPerformed(ActionEvent event) { System.exit(0); } } class Authorize extends MainFrame implements ActionListener { JTextField Login,Password; Connection conn; public Authorize( JTextField log, JTextField pass, Connection connection ) { Login = log; Password = pass; conn = connection; } boolean CheckData() throws SQLException { MainFrame Dr = new MainFrame(); Statement stat = conn.createStatement(); ResultSet rs; boolean fl= false; rs = stat.executeQuery("SELECT * FROM Auth"); Dr.Draw_Auth_Frame(); while(rs.next()) { if (rs.getString(1).equals(Login) && rs.getString(2).equals(Password)) {fl = true; Dr.Draw_Auth_Frame(); } else fl = false; System.out.println("!!!"); rs.next(); } rs.close(); return fl; } public void actionPerformed(ActionEvent event) { MainFrame frame = new MainFrame(); System.out.println(" Dbg "); if (Login.getText() == "1" && Password.getText() == "1"){ frame.Draw_Auth_Frame(); System.out.println("Dbg!!!!!");} } } class MainFrame { JTextField tfId ; JTextField tfPwd; Connection conn; public void Draw() throws SQLException { SimpleFrame frame = new SimpleFrame(500,400,"Admin Session"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); JPanel panel = new JPanel(); JPanel panelEdit = new JPanel(); JButton btClose = new JButton("Close"); JButton btOk = new JButton("Ok"); JTextField tfId = new JTextField("",6); JTextField tfPwd = new JTextField("",12); //Setting panel orientation panel.setLayout(new FlowLayout(FlowLayout.CENTER)); panelEdit.setLayout(new GridLayout(2,2)); // Add Buttons btOk.setBackground(Color.YELLOW); btClose.setBackground(Color.YELLOW); // Listeners of buttons btClose.addActionListener(new Terminate()); btOk.addActionListener(new Authorize(tfId, tfPwd, conn)); panel.setBackground(Color.darkGray); panel.add(btOk); panel.add(btClose); // Add EditBoxes panelEdit.add(new JLabel(" Nick")); panelEdit.add(tfId); panelEdit.add(new JLabel(" Password")); panelEdit.add(tfPwd); frame.setLayout(new BorderLayout()); frame.add(panel, BorderLayout.SOUTH); frame.add(panelEdit, BorderLayout.CENTER); frame.pack(); } public void Draw_Auth_Frame() { SimpleFrame frame = new SimpleFrame(500,400,"Admin Session"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); JPanel panel = new JPanel(); JPanel panelEdit = new JPanel(); JButton btAdd = new JButton("Add"); JTextField tfAdd = new JTextField("",6); //Setting panel orientation panel.setLayout(new FlowLayout(FlowLayout.CENTER)); panelEdit.setLayout(new GridLayout(2,2)); // Add Buttons btAdd.setBackground(Color.YELLOW); // Listeners of buttons btAdd.addActionListener(new Terminate()); //this.Draw_Auth_Frame(); //} panel.setBackground(Color.darkGray); panel.add(btAdd); // Add EditBoxes panelEdit.add(new JLabel(" Add User")); panelEdit.add(tfAdd); frame.setLayout(new BorderLayout()); frame.add(panel, BorderLayout.SOUTH); frame.add(panelEdit, BorderLayout.CENTER); frame.pack(); } } |
Сообщ.
#10
,
|
|
|
Nort0n, строки нельзя через == сравнивать, используй метод equals()
|
Сообщ.
#11
,
|
|
|
Спасибо
|
Сообщ.
#12
,
|
|
|
Nort0n, вообще нормальная IDE(как например IntelliJ Idea) подсвечивает сравнение строк через ==, давая понять что это не хорошо
|
Сообщ.
#13
,
|
|
|
у меня Eclipse. Он не ругался
|