2013-07-28 29 views
-1

我設置等於從文件中讀取信息,每當我想將它添加到我的JFrame和裝載類選擇JLabel不會出現一個字符串的JLabel。字符串intromsgstring正在工作,我知道,因爲我用System.out.println()測試了它。的JLabel沒有驗證

下面是代碼

import java.awt.*; 
import java.util.Scanner; 
import java.awt.event.KeyListener; 
import java.awt.event.MouseAdapter; 
import java.awt.event.MouseEvent; 
import java.awt.event.MouseListener; 
import java.awt.event.KeyEvent; 
import java.awt.event.KeyAdapter; 
import java.awt.event.MouseMotionListener; 
import javax.swing.ImageIcon; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.JPanel; 
import java.awt.color.*; 
import java.awt.Graphics; 
import java.io.File; 
import java.io.FileNotFoundException; 
public class intro extends JFrame{ 

//Variables 
public Font font = new Font("Arial", Font.BOLD, 20); 
public String playername; 
public String intromsgstring; 
public JLabel intromsg = new JLabel(intromsgstring); 
public JFrame window = new JFrame(); 
//Screen Settings 
public intro(){ 
setSize(1100,650); 
setLocationRelativeTo(null); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
setResizable(false); 
setVisible(true); 
setTitle("TEST"); 
setBackground(Color.BLACK); 
} 

//Paint Method 
public void paint(){ 
    try { 
     Scanner scan = new Scanner(new      File("/Users/AlecStanton/Desktop/op1/name.txt")); 
     intromsgstring = "Oh! Hello there. Welcome to the land of lylaid. So your name is " + scan.nextLine(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    //Intro Box 
    intromsg.setFont(font); 
    intromsg.setAlignmentX(170); 
    intromsg.setAlignmentY(535); 
    window.add(intromsg); 
} 

//Object 
public static void main(String[] args) { 
     intro intro = new intro(); 
    } 
+0

那麼我該如何修復我的progarm? – user2540802

+0

我猜測我應該在另一種方法中添加掃描儀呢? – user2540802

+0

但是,爲什麼isint我的jlabel出現在jframe上,如果它正確加載內容的話? – user2540802

回答

4

你有幾個問題與您的代碼,包括

  • 你要覆蓋一個JFrame的paint方法,這東西應該幾乎從不進行
  • 您正在使用掃描儀並嘗試使用paint或paintComponent方法讀入文件。
  • 你試圖在一個組件添加在塗料或方法的paintComponent。
  • 您創建一個掃描儀對象,但從不讀取文件。
  • 您JAVE 2個JFrames,this這是正在顯示您的介紹類和當前對象和窗口,它是一個JFrame變量,它接受一個JLabel和永遠不會顯示。
  • 你需要學習並遵循Java的命名約定,以便其他人可以更好地瞭解你的代碼。類名以大寫字母開頭,方法名和變量名以小寫字母開頭。
  • 你想提高你的代碼格式化,再次讓其他人可以更容易地理解你的代碼。這包括你的代碼縮進和使用空格(一個空行很多)。

您從不添加組件或使用掃描儀或文件在paint或paintComponent方法中工作。除非你想讓你的程序完全沒有響應。應該幾乎不會覆蓋paint方法,並且應該覆蓋JPanel的paintComponent方法以僅進行繪畫和繪畫。

使用掃描儀的構造函數或無paint方法。
另請參閱Swing Tutorial瞭解如何使用此庫的更多詳細信息。

+0

你能否包含一些程序代碼來解決這個問題,但我是java的新手,並且不熟悉面向對象編程。 – user2540802

+0

我知道PHP,但多數民衆贊成在不同的 – user2540802

+0

@ user2540802:我甚至不知道你要完成什麼。你真的需要首先瀏覽一些Swing教程。在嘗試使用它們之前,您必須先學習Java和Swing。沒有捷徑。 –