2011-10-18 79 views
0

我試圖寫一個代碼來生成這樣的圖形:http://www.mathgoodies.com/lessons/graphs/images/line_example1.jpg的Java的JPanel的JPanel的頂部(上圖中上端圖)

我需要多個不同的線路(我希望這是他們叫什麼)。

我剛剛開始學習awt和swing。經過三個小時的工作後,我無法設法在任何其他繪圖上繪製線條。

我會試着用一個例子來解釋我的問題。

可以說,我得出這樣一個正方形:

JFrame window = new JFrame(); 
window.setLayout(null); 
window.setVisible(true); 

Graph graph = new Graph(); 
window.add(graph); 
//------------------- 
public class Graph extends JPanel { 
    .... 
    public void paintComponent (Graphics g) { 
     super.paintComponent(g); 
     g.setColor(Color.white); 
     g.fillRect(150, 20, x, y); 
    } 
    .... 
} 

如何畫另一條線或任何對這個白色正方形繪製內部消除線在圖表中的paintComponent方法的頂部別的嗎?如何在另一個上添加另一個JPanel,以便它們都可見? (我正在使用JPanel添加一些按鈕)

希望你能明白我在問什麼。

謝謝!

回答

2

如何畫另一條線或任何對這個白色正方形繪製內部消除線在圖表中的paintComponent方法的頂部別的嗎?

所有的風俗畫應在的paintComponent()方法來實現。我不知道爲什麼你想添加另一個面板,在線塗料。保持簡單並將所有繪畫代碼保存在一個地方。

如果您想要將其他組件(如JPanel)添加到面板,那麼您將使用佈局管理器來正確佈置組件。您還需要使用setOpaque(...)方法使組件不透明。

分層組件的另一種方法是使用JLayeredPane。

首先閱讀Swing tutorial。上有幾個部分:

  1. 使用佈局管理器
  2. 使用分層窗格。
+0

感謝您的鏈接和快速回復!我會去嘗試setOpaque,如果它不起作用,我可能會閱讀整個文檔。再次感謝! – Alvydas

+0

*「我不確定你爲什麼要添加另一個在線塗料的面板。」*我會將該評論升級爲明確的問題。 **爲什麼**不只是在一個'paintComponent()'方法中繪製所有組件?你正在尋找一個'痛苦的世界'來嘗試另一種方式。 –

+0

我想將一個按鈕放在JPanel的頂部,但是我不能不拆分我的佈局或採取空佈局。這個解決方案並沒有回答「把jpanel放在jpanel上」的問題,你把主題改爲「哦,但是你可以用一個繪圖做同樣的事情」,而是的,情況就是這樣,它並不總是如此(例如,我可以在jpanel上繪製一個按鈕,並通過顯式的鼠標事件處理來處理它的事件,但這不再是一個好主意) – Dmitry