2012-03-16 5 views
-1

私はここで何かが不足していますが、私はsetAttributesメソッドを使って、敏感なテキストフィールドを更新することはできません。メソッドと呼び出しを呼び出すクラスは、system.out.println(敏捷性)のように必要な値を渡して正常に動作します。しかし、下の行だけでは、agilityAmountのtxtフィールドを設定しようとしましたが、表示されません。私は間違って何をしていますか?私のsetTextは私のJTextFieldを更新していませんか?

class GraphicalInterface extends JFrame implements Runnable, KeyListener 
{ 


    GraphicalInterface() { 
    } 
    JFrame mainwindow; 

    //declare panels 
    JPanel panel1=new JPanel(); 
    JPanel panel2=new JPanel(); 
    JPanel invictusWelcome=new JPanel(); 
    JPanel gameStartQuit=new JPanel(); 
    JPanel panel3=new JPanel(); 
    JPanel panel4=new JPanel(); 
    JPanel panel5=new JPanel(); 
    JPanel panel6=new JPanel(); 
    JPanel panel7=new JPanel(new GridLayout(7, 1)); 
    JPanel mappanel=new JPanel(); 
    JPanel attribpanel=new JPanel(new GridLayout(12,0)); 

    //declare buttons 
    JButton startGame; 
    JButton quitButton; 
    JButton mapButton; 
    JButton townButton; 
    JButton castleButton; 
    JButton forestButton; 
    JButton exitButton; 
    JButton fighterSelect; 
    JButton hybridSelect; 
    JButton magicSelect; 
    JButton characterConfirm; 

    //declare labels 
    JLabel agility=new JLabel("Agility:"); 
    JLabel health=new JLabel("Health: "); 
    JLabel mana=new JLabel("Mana: "); 
    JLabel strength=new JLabel("Strength: "); 
    JLabel intelligence=new JLabel("Intelligence: "); 
    JLabel charNameLabel=new JLabel("Name: "); 
    JTextField charNameLabelField=new JTextField(); 
    JTextField healthAmount=new JTextField(); 
    JTextField manaAmount=new JTextField(); 
    JTextField currentHealthAmount=new JTextField(); 
    JTextField currentManaAmount=new JTextField(); 
    JTextField strengthAmount=new JTextField(); 
    JTextField agilityAmount=new JTextField(); 
    JTextField intelligenceAmount=new JTextField(); 


    JTextField description; 

    //declares attribute values 
    String name=""; 
    int agi=0; 
    int str=0; 
    int intel=0; 
    int currentHealth=0; 
    int maxHealth=0; 
    int currentMana=0; 
    int maxMana=0; 
    int location=0; 


    //Initialize Listener Object 
    Listener aListener= new Listener(); 
    Location locationObj= new Location(); 


    //images 
    private Image map; 
    private Image attribBackground; 
    private Image charMagic; 
    private Image charHybrid; 
    private Image charFighter; 
    private Image town; 
    private Image cave; 
    private Image forest; 
    private Image castle; 
    private Image characterIcon; 

    protected void initializeWindows() 
    { 
     mainwindow=new JFrame("Invictus Maneo"); 
     mainwindow.setVisible(true); 
     mainwindow.setPreferredSize(new Dimension(900, 700)); 
     mainwindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     mainwindow.setResizable(false); 

     panel1.setVisible(true); 
     panel1.setPreferredSize(new Dimension(800, 550)); 
     mainwindow.getContentPane().add(panel1, BorderLayout.NORTH); 

     panel2.setVisible(true); 
     panel2.setPreferredSize(new Dimension(800, 100)); 

     //Initializes buttons 
     startGame=new JButton("Begin Adventure"); 
     panel2.add(startGame, BorderLayout.SOUTH); 
     startGame.addActionListener(aListener); 

     quitButton=new JButton("Quit"); 
     panel2.add(quitButton, BorderLayout.SOUTH); 
     quitButton.addActionListener(aListener); 

     mapButton=new JButton("Map"); 
     mapButton.addActionListener(aListener); 

     townButton=new JButton("Town"); 
     townButton.addActionListener(aListener); 

     castleButton=new JButton("Castle"); 
     castleButton.addActionListener(aListener); 

     exitButton=new JButton("Exit Map"); 
     exitButton.addActionListener(aListener); 

     forestButton=new JButton("" +"Forest"); 
     forestButton.addActionListener(aListener); 

     fighterSelect=new JButton("Fighter"); 
     fighterSelect.addActionListener(aListener); 
     hybridSelect=new JButton("Hybrid"); 
     hybridSelect.addActionListener(aListener); 
     magicSelect=new JButton("Magic"); 
     magicSelect.addActionListener(aListener); 

     //initialize attribute panel 
     //attribpanel=new JPanel(new GridLayout(12,0)); 
     attribpanel.setVisible(false); 
     attribpanel.setPreferredSize(new Dimension(200, 500)); 
     attribpanel.setBackground(null); 


     attribpanel.add(charNameLabel); 
     attribpanel.add(charNameLabelField); 
     attribpanel.add(health); 
     attribpanel.add(healthAmount); 
     attribpanel.add(mana); 
     attribpanel.add(manaAmount); 
     attribpanel.add(strength); 
     attribpanel.add(strengthAmount); 
     attribpanel.add(agility); 
     attribpanel.add(agilityAmount); 
     attribpanel.add(intelligence); 
     attribpanel.add(intelligenceAmount); 

     mainwindow.getContentPane().add(panel2, BorderLayout.SOUTH); 

     panel3.setVisible(true); 
     panel3.setPreferredSize(new Dimension(200, 600)); 

     panel4.setVisible(true); 
     panel4.setPreferredSize(new Dimension(650, 500)); 


     panel5.setVisible(true); 
     panel5.setPreferredSize(new Dimension(600, 600)); 
     panel5.setBackground(getBackground()); 

     panel6.setVisible(false); 
     panel6.setPreferredSize(new Dimension(500, 500)); 

     panel7.setVisible(false); 
     panel7.setPreferredSize(new Dimension(100, 200)); 


     //Adds sub panels to panel 1 
     panel1.add(panel3, BorderLayout.NORTH); 
     panel1.add(panel4, BorderLayout.NORTH); 

     //panel5.setBorder(BorderFactory.createLineBorder (Color.black, 2)); 
     //panel6.setBorder(BorderFactory.createLineBorder (Color.black, 2)); 
     panel2.setBorder(BorderFactory.createLineBorder (Color.black, 2)); 
     attribpanel.setBorder(BorderFactory.createLineBorder (Color.black, 2)); 
     //panel4.setBorder(BorderFactory.createLineBorder (Color.black, 2)); 

     panel4.add(panel5, BorderLayout.NORTH); 

     loadPictures(); 

     BufferedImage myPicture; 
     try { 
      myPicture = ImageIO.read(new File("C:\\test\\GameTitle.jpg")); 
      JLabel gameTitle = new JLabel(new ImageIcon(myPicture)); 
      panel5.add(gameTitle); 
      panel5.repaint(); 
      panel1.repaint(); 

     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     BufferedImage map; 
     try { 
      map = ImageIO.read(new File("C:\\test\\map.jpg")); 
      JLabel mapLabel = new JLabel(new ImageIcon(map)); 
      panel6.add(mapLabel); 
      panel1.repaint(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     mainwindow.pack(); 


     } 

    void setAttributePanel(int s, int a, int i, int h, int m) 
    { 

     agi=a; 
     str=s; 
     intel=i; 
     currentHealth=h; 
     maxHealth=h; 
     currentMana=m; 
     maxMana=m; 

     System.out.println(agi+": agility"); 
     agilityAmount.setText(agi+""); 
     attribpanel.repaint(); 
     panel3.repaint(); 
     panel1.repaint(); 


    } 




private class Listener implements ActionListener 
{ 

    public void actionPerformed(ActionEvent a) 
    { 
     if (a.getSource()==quitButton) 
     { 
      System.exit(0); 
     } 

     else if (a.getSource()==startGame) 
     { 

      startGame.setVisible(false); 
      panel2.add(mapButton); 
      mapButton.setVisible(true); 
      panel2.repaint(); 
      panel5.setVisible(false); 
      panel3.add(attribpanel); 
      attribpanel.setVisible(true); 
      Character charChosenObj= new Character(); 
      charChosenObj.characterCreation(); 
      attribpanel.repaint(); 
      panel3.repaint(); 
     } 

     else if (a.getSource()==mapButton) 
     { 
      System.out.println("Where are you going?"); 
      panel4.add(panel6, BorderLayout.CENTER); 
      panel4.add(panel7); 
      panel7.add(townButton); 
      panel7.add(forestButton); 
      panel7.add(castleButton); 
      panel7.add(exitButton); 
      panel5.setVisible(false); 
      panel6.setVisible(true); 
      panel7.setVisible(true); 
      panel4.repaint(); 


     } 

     else if (a.getSource()==exitButton) 
     { 
      panel5.setVisible(true); 
      panel6.setVisible(false); 
      panel7.setVisible(false); 

     } 

     else if (a.getSource()==townButton) 
     { 
      System.out.println("Pick up some milk will ya?"); 
      locationObj.setLocation(1); 

     } 

     else if (a.getSource()==forestButton) 
     { 
      System.out.println("Watch for falling trees."); 
      locationObj.setLocation(2); 
      Combat combatObj=new Combat(); 
      combatObj.startCombat(); 

     } 

     else if (a.getSource()==castleButton) 
     { 
      System.out.println("Are you sure... it's kinda dark in there?"); 
      locationObj.setLocation(3); 


     } 

    } 

} 
+0

getTextを実行すると正しい値が得られますか? – Thomas

+1

'setAttributePanel'はどこで呼びますか?これは' setText'を実行しているメソッドで、どこからでも呼び出すことはできません。 –

+0

私は@ringbearerと一緒にいます - あなたはこの問題を解決するのに十分な情報を示していません。私たちが知っている限り、複数のGraphicalInterfaceを表示することができ、表示されない他のGraphicalInterfaceを表示することができます。 –

答えて

1

mainwindow.setVisible(true);あなたはレイアウト成分および可視を有しており(例えば、テキストを追加することによって)、その後推奨サイズを変更する場合、新しいレイアウトサイクルを強制しなければならないのGUI comstructor

+0

私は、そのコード行を最後まで切り換えて修正しました。私は、視覚的な面をはるかに良くしています。 –

1

の最後の行でなければなりませんコンポーネントを "無効化"するか、コンテナを "検証"するなどします。他の問題があります

、どちらか

  • はなぜとしてそれを使用するinendいけないとき、あなたのGraphicalInterface JFrameのあるリスナーにコンポーネントを追加するとき、あなたはどこか別の場所にそれらを取り除くために準備する必要があります
  • または唯一の「のsetVisible」により、視認性を扱う
  • たぶん、より良いあなたがすべき「のsetVisible」あなたのコンテナが完全にconfiguあるだけmKorbelで述べたようにGridBagLayoutの
  • のように、サイズに利用できるその子のサイズを変更し、いくつかのレイアウトを使用赤。
関連する問題