在下面的簡單代碼中,我只需創建一個框架,然後在其中添加一個JPanel
和menubar
即可。JFrame的奇怪顯示問題
public class MainFrame extends JFrame {
private DrawPanel drawPanel;
public MainFrame()
{
super("Coordinate Geometry Visualiser");
drawPanel = new DrawPanel();
add(drawPanel);
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic('F');
JMenuItem newItem = new JMenuItem("New");
newItem.setMnemonic('N');
fileMenu.add(newItem);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
menuBar.add(fileMenu);
JMenu editMenu = new JMenu("Edit");
editMenu.setMnemonic('E');
menuBar.add(editMenu);
}
}
抽獎面板代碼 -
public class DrawPanel extends JPanel {
public DrawPanel()
{
}
public void paintComponent(Graphics g)
{
super.paintComponents(g);
setBackground(Color.BLACK);
g.setColor(Color.RED);
g.drawLine(100, 50, 150, 100);
}
}
,最後用main()
public class CGVApplication {
public static void main(String[] args) {
MainFrame appFrame = new MainFrame();
appFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
appFrame.setSize(300, 275);
appFrame.setVisible(true);
}
}
應用程序在運行中日食的應用程序,這是我所得到的 -
爲什麼雙菜單欄和線?這非常煩人。在循環應用程序或彈出窗口時,重繪的窗口很好(右側圖像)。
也在我的DrawPanelpaintComponent
我將背景設置爲黑色,但沒有效果?
上述兩個問題的原因是什麼?請幫忙!
您通常在初始化組件時設置背景色,而不是在繪製方法中。嘗試將該行移至構造函數。 - 對於加倍問題:這只是一個猜測,但嘗試添加此行之前打開框架:'System.setProperty(「sun.java2d.noddraw」,「true」);' – Thomas 2011-12-30 07:26:57
嘿謝謝,移動(或評論)這行'setBackground(Color.BLACK);'從paint到構造函數解決了雙線和菜單的問題。但面板仍然不是黑色。也許你應該添加你的評論作爲答案。順便說一句'setProperty'沒有幫助。 – 2011-12-30 07:39:57