次の単純なコードでは、フレームを作成して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
私は背景を黒に設定しましたが効果はありませんか?
上記の2つの問題の原因は何ですか?助けてください!
通常、コンポーネントの初期化時に背景色を設定します。ペイント方法では使用しません。その行をコンストラクタに移動してみてください。 - 倍増問題については、それは単なる推測ですが、フレームを開く前にこの行を追加してみてください: 'System.setProperty(" sun.java2d.noddraw "、" true ");' – Thomas
ありがとう、移動(またはコメント) line 'setBackground(Color.BLACK);'ペイントからコンストラクタまで二重線とメニューの問題を解決しました。しかしパネルはまだ黒ではない。たぶんあなたは答えとしてあなたのコメントを追加する必要があります。 BTWの 'setProperty'は役に立たなかった。 –