나는 워크 래프트에서처럼, 과 같은 스킬 프로그램을 만들고 싶습니다. 제 질문은 : 액션 리스너가 정수 sp를 최종적으로 만들고 싶습니다 ...하지만 최종 정수 sp가 나오면 최종 정수의 값 ....자바 프로그래밍에서
을 Heres 코드를 변경하고 실행 해보세요 수 없습니다
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Skills
{
public static void main(String[] args)
{
//DECLARATION
int sp = 0;
JFrame skillframe = new JFrame("Skills");
final JPanel panel1 = new JPanel();
final JPanel panel2 = new JPanel();
ImageIcon s1 = new ImageIcon("skill1.jpg");
ImageIcon s2 = new ImageIcon("skill2.jpg");
ImageIcon s3 = new ImageIcon("skill3.jpg");
ImageIcon s4 = new ImageIcon("skill4.jpg");
ImageIcon s5 = new ImageIcon("stats.gif");
final JButton skills = new JButton("Skills");
JButton skill1 = new JButton(s1);
JButton skill2 = new JButton(s2);
JButton skill3 = new JButton(s3);
JButton skill4 = new JButton(s4);
JButton stats = new JButton(s5);
final JButton back = new JButton("BacK");
final JButton levelup = new JButton("Level UP!");
JLabel points = new JLabel("Skill Points : " + sp);
///SETTINGS :
// Skills
panel1.add(skills);
skills.setBounds(226, 82, 64, 64);
skills.setBackground(Color.black);
skills.setForeground(Color.white);
// Level UP!
panel1.add(levelup);
levelup.setBounds(10, 82, 100, 64);
levelup.setBackground(Color.black);
levelup.setForeground(Color.white);
// Skill 1
panel2.add(skill1);
skill1.setBounds(10, 10, 64, 64);
// Skill 2
panel2.add(skill2);
skill2.setBounds(82, 10, 64, 64);
// Skill 3
panel2.add(skill3);
skill3.setBounds(154, 10, 64,64);
// Skill 4
panel2.add(skill4);
skill4.setBounds(226, 10, 64, 64);
// Stats
panel2.add(stats);
stats.setBounds(10, 82, 64, 64);
// Back
panel2.add(back);
back.setBounds(226, 82, 64, 64);
back.setBackground(Color.black);
back.setForeground(Color.white);
// Points
panel2.add(points);
points.setBounds(100, 82, 100, 64);
points.setForeground(Color.white);
// Frame
skillframe.setSize(310,195);
panel1.setSize(310,195);
panel2.setSize(310,195);
skillframe.add(panel1);
skillframe.add(panel2);
panel1.setBackground(Color.black);
panel2.setBackground(Color.black);
panel1.setLayout(null);
panel2.setLayout(null);
panel2.setVisible(false);
skillframe.setVisible(true);
// ACTIONLISTENER
skills.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel1.setVisible(false);
panel2.setVisible(true);
//.......................................................................................................................................................
back.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
panel1.setVisible(true);
panel2.setVisible(false);
}
});
//.......................................................................................................................................................
}
});
//...........................................................................................................................................................
levelup.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
sp ++;
}
});
//...................................................................................................................................
}
}
영어로 이해할 수 없다면 google로 번역 할 수 있습니다. "최종 정수의 값을 변경할 수 없습니다." – Ankit
당신은'sp' 변수를'private int sp;'변수로 만들어야합니다. 또한'new ... '를 사용하고'main'에 모든 것을 넣는 것보다 코드를 여러 가지 방법으로 분리하십시오. 마지막으로 LayoutManager를 모든 곳에서 'null'로 설정하는 대신 사용하는 것을 고려하십시오. –
질문을 다시 말하고 형식을 지정해야하며 코드를 꼭 잘라야합니다. – NilsH