2014-01-24 99 views
0

我試圖繪製一些酒吧,有隨機整數到Java小程序波紋管,但覆蓋有一個錯誤即時通訊新的Java我試圖makr代碼中的兩個領域繪製方法是在最底部另一個是第二面板區域 什麼IM瞄準繪製圖形(g)到jpanel

http://i.stack.imgur.com/oRdi4.jpg

尺寸X,Y座標不

- 全尺寸= 200,250

-location GUI = 200,50

-image = 140150

-precip = 100,20

-temp = 20100個

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Container; 
import java.awt.Font; 
import java.awt.GridBagLayout; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.SwingUtilities; 
import java.awt.*; 
import java.awt.event.*; 
import java.applet.*; 
import javax.swing.*; 
import java.util.*; 

public class Final2 extends JFrame 
{ 
    //Panels 
    JPanel locationGui = new JPanel(); 
    JPanel temp = new JPanel(); 
    JPanel percip = new JPanel(); 
    JPanel image = new JPanel(); 
    //Location gui components 
    JButton Enter, Exit; 
    JTextField location; 
    JLabel city; 
    JRadioButton time; 
    JComboBox Seasons; 
    //bar # genertor 
    Random rand = new Random(); 
    int P = rand.nextInt (100) + 1; //Random Precipitation 
    int H = rand.nextInt (50) + 1; //Random Heat 
    public Final2() 
    { 
     init(); 

    } 


    public void init() 
    { 
     Font font = new Font ("impact", Font.PLAIN, 20); 
     //________________________________________________new panel____________________ 
     locationGui.setBackground (Color.RED); 
     JLabel guiLabel = new JLabel (""); 
     guiLabel.setFont (font); 

     Enter = new JButton ("Enter"); 
     Exit = new JButton ("exit"); 



     city = new JLabel ("What city?"); 
     location = new JTextField (20); //location entry field 


     Seasons = new JComboBox(); 
     Seasons.addItem ("Summer"); 
     Seasons.addItem ("Fall"); 
     Seasons.addItem ("Winter"); 
     Seasons.addItem ("Spring"); 


     time = new JRadioButton ("check if night?"); 


     locationGui.add (city); 
     locationGui.add (location); 
     locationGui.add (Seasons); 
     locationGui.add (time); 



     locationGui.add (guiLabel); 


     //________________________________________________new panel____________________ 
     temp.setBackground (Color.BLUE); 
     temp.setLayout (new GridBagLayout()); 
     JLabel tempLabel = new JLabel ("Temp"); 
     tempLabel.setFont (font); 
     temp.add (tempLabel); 

     //________________________________________________new panel____________________ 
     percip.setBackground (Color.GREEN); 
     JLabel pLabel = new DrawingPanel(); //where it should be 

     percip.add (pLabel); 

     //________________________________________________new panel____________________ 
     image.setBackground (Color.ORANGE); 
     image.setLayout (new GridBagLayout()); 
     JLabel imageLabel = new JLabel ("Image"); 
     imageLabel.setFont (font); 
     image.add (imageLabel); 

     Container contentPane = getContentPane(); 

     contentPane.setLayout (new BorderLayout()); 
     contentPane.add (locationGui, BorderLayout.NORTH); 
     contentPane.add (temp, BorderLayout.EAST); 
     contentPane.add (percip, BorderLayout.SOUTH); 
     contentPane.add (image, BorderLayout.CENTER); 

     setContentPane (contentPane); 
     setDefaultCloseOperation (EXIT_ON_CLOSE); 
     setSize (400, 400); 
     setLocationRelativeTo (null); 
     setVisible (true); 
    } 


    public static void main (String[] args) 
    { 
     SwingUtilities.invokeLater (new Runnable() 

     { 


      public void run() 
      { 
       new Final2(); 
      } 
     } 


     ); 
    } 


    private class DrawingPanel extends javax.swing.JPanel {//area i have issues with atm 
    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D) g; 
     drawPercip(g); 
    } 
    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(200, 400); 
    } 



    } 


    public void drawPercip (Graphics g) 
    { 
     //Precipitation Bar 
     g.setColor (Color.black); 
     g.drawRect (40, 170, 100, 20); //outline of bar 
     g.setColor (Color.blue); 
     g.fillRect (40 + 1, 170 + 4, P, 14); //indicator bar (+4 puts space beetween outline bar) 
    } 


    public void drawTemp (Graphics g) 
    { 
     //Temparature Bar 
     g.setColor (Color.red); 
     g.fillRect (170 + 4, 50, 14, 100); //Covers in 
     g.setColor (Color.black); 
     g.drawRect (170, 50, 20, 100); //outline of bar 
     g.setColor (Color.white); 
     g.fillRect (170 + 4, 50 + 1, 16, 100 - H); //indicator bar (+4 puts space beetween outline bar) 
    } 




} 

我的當前錯誤(4)在@override正在發生在這個代碼塊提供的唯一消息是「非法令牌」和「意外符號被忽略」idk爲什麼不提供更多信息

private class DrawingPanel extends javax.swing.JPanel {//area i have issues with atm 
    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D) g; 
     drawPercip(g); 
    } 
    @Override 
    public Dimension getPreferredSize() { 
     return new Dimension(200, 400); 
    } 
+0

讀取時間如果出現錯誤,你應該張貼他們。請注意,'paintComponent'應該受到保護,但這不應該成爲問題。 –

+0

即時業餘愛好者如此idk什麼保護手段和錯誤是「非法令牌」和「意想不到的符號被忽略」即時通訊使用準備Java作爲編譯器 –

+0

1)不要套用您的錯誤消息。而是將整個郵件作爲對您問題的修改發佈。在您的代碼中指明發生錯誤的位置。 –

回答

2

首先,我看到沒有小程序,

其次,DrawingPanel不是JLabel

JLabel pLabel = new DrawingPanel(); //where it should be 

更改pLable類型JComponentJPanelDrawingPanel這取決於你希望能夠訪問了每個類的東西。

第三,你不應該依賴於幻數

public void drawPercip(Graphics g) { 
    //Precipitation Bar 
    g.setColor(Color.black); 
    g.drawRect(40, 170, 100, 20); //outline of bar 
    g.setColor(Color.blue); 
    g.fillRect(40 + 1, 170 + 4, P, 14); //indicator bar (+4 puts space beetween outline bar) 
} 

public void drawTemp(Graphics g) { 
    //Temparature Bar 
    g.setColor(Color.red); 
    g.fillRect(170 + 4, 50, 14, 100); //Covers in 
    g.setColor(Color.black); 
    g.drawRect(170, 50, 20, 100); //outline of bar 
    g.setColor(Color.white); 
    g.fillRect(170 + 4, 50 + 1, 16, 100 - H); //indicator bar (+4 puts space beetween outline bar) 
} 

不保證該面板的高度和寬度是什麼,你認爲這可能是。使用的getWidthgetHeight方法

第四,如果你想有更多的一個DrawingPanel,你應該讓

int P = rand.nextInt(100) + 1; //Random Precipitation 
int H = rand.nextInt(50) + 1; //Random Heat 

部分的DrawingPanel的。

您還應該通過Code Conventions for the Java Programming Language

+0

我不太明白你在說什麼,但我增加了更多信息旋轉壓軸佈局的想法和尺寸即時消息後,爲每個項目 –

+0

什麼部分你不明白? – MadProgrammer

+0

1)你說要改變Plalab到DrawingPanel,它已經是 2)我從來沒有聽說過「幻數」 –