2015-09-27 54 views
0

我是一個初學者程序員,所以我不知道所有的vocab,但我理解java的一些基本知識。繪製到GUI從使用另一個類的主要在Java

所以我想從使用另一個類的主要GUI中繪製。我知道我不是非常具體,但這是我的代碼,我會盡力解釋我想要做的。

這是我的主要

import javax.swing.*; 
    import java.awt.*; 

public class ThisMain { 


public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    JFrame theGUI = new JFrame(); 
    theGUI.setTitle("GUI Program"); 
    theGUI.setSize(600, 400); 
    theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    ColorPanel panel = new ColorPanel(Color.white); 
    Container pane = theGUI.getContentPane(); 
    pane.add(panel); 
    theGUI.setVisible(true); 



    } 
} 

這是我的其他類

import javax.swing.*; 
import java.awt.*; 
public class ColorPanel extends JPanel { 
    public ColorPanel(Color backColor){ 
    setBackground(backColor); 

} 

public void paintComponent(Graphics g){ 
    super.paintComponent(g); 

} 
} 

我試圖用線

ColorPanel panel = new ColorPanel(Color.white); 

或者類似的東西使用的東西像

drawRect(); 

在主要,並在GUI中繪製。

這是我使用,我認爲最接近於工作

import javax.swing.*; 
import java.awt.*; 

public class ThisMain { 


    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     JFrame theGUI = new JFrame(); 
     theGUI.setTitle("GUI Program"); 
     theGUI.setSize(600, 400); 
     theGUI.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     //I'm trying to draw a string in the JFrame using ColorPanel but i'm   Trying to do it from the main 
     ColorPanel panel = new ColorPanel(){ 
      public void paintComponent(Graphics g){ 
       super.paintComponent(g); 
       //This is the line I need to work using the ColorPanel in anyway 
       g.drawString("Hello world!", 20, 20); 
     }; 
     Container pane = theGUI.getContentPane(); 
     //The errors occur here 
     pane.add(panel); 
     theGUI.setVisible(true); 


    //and on these brackets 
    } 
} 
+0

'「或者類似的東西使用的東西一樣......」' - 如何明確你想畫的JPanel的?請儘可能詳細,因爲大多數解決方案將取決於這些細節。 –

+0

老實說我不知道​​我希望有人會知道該怎麼做,因爲我知道的是我應該使用那條線 – Winchester

+0

我不知道你想達到什麼目的,爲什麼你有沒有爲你工作,因爲它,你沒有(真的)提出一個問題,或更重要的一點,問一個問題,我們可以回答 – MadProgrammer

回答

2

我真的不知道你在想什麼做的(你還沒有回答我的評論你的問題的代碼澄清),但我想:

  • 給你的顏色面板一List<Shape>
  • 給它一個public void addShape(Shape s)方法,允許類的外部插入形狀到這個列表中,然後調用repaint()
  • 而在ColorPanel的paintComponent方法中,遍歷List,使用Graphics2D對象繪製每個Shape項目。

請注意,Shape是一個接口,所以您的List可以容納Ellipse2D對象,Rectangle2D對象,Line2D對象,Path2D對象以及實現接口的其他對象的整個主機。另外,如果您想將每個圖形與顏色相關聯,則可以將這些項目存儲在Map<Shape, Color>中。

0

你爲什麼不能編譯通過這條線造成的原因:

顏色面板面板=新的顏色面板(Color.white);

因爲ColorPanel類不包含在swing庫中,因此您必須對其進行編碼。這段代碼擴展了JPanel幷包含一個構造函數,它帶有一個Color參數。當面板被實例化,並設置其背景色的構造函數運行:

import javax.swing.*; 
import java.awt.*; 

public class ColorPanel extends JPanel { 
    public ColorPanel(Color backColor) { 
    setBackground(backColor); 
    } 
} 
相關問題