ورود

View Full Version : سوال: چطوری میتونم به ازای فشردن یه Button به یه متغییر محلی مقدار بدم؟



Kevin_Anderson
جمعه 01 اسفند 1393, 17:42 عصر
سلام دوستان.
من یه قطعه کد دارم که باید به ازای فشرده شدن btnok مقدار i رو برابر 2 قرار بده
در حالی که این عمل انجام نمیشه
یعنی وقت فراخوانی متد getI() مقدار ه برگردونده نمیشه:ناراحت:
لطفا راهنمایی کنید

package GUI;

import javax.swing.JPanel;
import javax.swing.JLabel;
import javax.swing.JButton;

import java.awt.Panel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class EnterOK extends JPanel {

private int i=0;


/**
* Create the panel.
*/
public EnterOK() {

JLabel lblEnterOk = new JLabel("Enter Ok");
add(lblEnterOk);

JButton btnOk = new JButton("OK");
btnOk.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent btnok) {
i=2;
setVisible(false);
}
});
add(btnOk);

JLabel label = new JLabel("");
add(label);
setVisible(true);
}


public int getI() {
return i;
}

public void setI(int i) {
this.i = i;
}

}

ahmad.mo74
یک شنبه 03 اسفند 1393, 16:59 عصر
این کد مشکلی نداره...

Kevin_Anderson
یک شنبه 03 اسفند 1393, 21:25 عصر
خواهش میکنم به کد زیر توجه کنید
با run کردن برنامه i is:0 چاپ میشه اما بعد از فشردن کلید ok فقط صفحهء مورد نظر پاک میشه و چاپ دوباره ء این عبارت رو شاهد نیستیم
محبت کنید راهنمایی کنید
بهتره این طوری سوالم رو تغییر بدم که چطور میتونم بعد از فشرده شدن Button ok یه مقدار عددی 2 روبه صورت فراخوانی کردن متد getI() از کلاس chengePanel چاپ کنم تو ورودی استاندارد

package GUI;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextArea;

public class ChengePanel extends JFrame {

private JPanel contentPane;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
ChengePanel frame = new ChengePanel();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public ChengePanel() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout());
setContentPane(contentPane);

EnterOK ok=new EnterOK();
if(true){
System.out.println("i is:"+ok.getI());
}
contentPane.add(ok,BorderLayout.NORTH);
}

}