プログラムの簡単な説明
こんにちは、みんな。今朝は退屈だったので、グラフ作成プログラムを書くことにしました。最終的には、このソフトウェアでDijksta のアルゴリズムなどを実行できるようになります。
画面上で何かが変化すると、すべてが描画される のrepaint
メソッドが呼び出さJPanel
れます。これはJPanel
ペイント方法です:
public void paint(Graphics g)
{
for(Node node : graph.getNodes()){
node.paint(g);
}
for(Link link : graph.getLinks()){
link.paint(g);
}
}
リスト内の各要素を循環して描画するだけです。
ノード クラスのペイント メソッドは次のとおりです。
public void paint(Graphics g)
{
g.setColor(color);
g.drawOval(location.x, location.y, 50, 50);
g.setColor(Color.BLACK);
g.drawString(name, location.x + 20, location.y + 20);
}
リンクの場合は次のとおりです。
public void paint(Graphics g)
{
Point p1 = node1.getLocation();
Point p2 = node2.getLocation();
// Grab the two nodes from the link.
g.drawLine(p1.x + 20, p1.y + 20, p2.x + 20, p2.y + 20);
// Draw the line between them.
int midPointX = ((p1.x + p2.x) / 2) + (100 / (p2.x - p1.x));
int midPointY = ((p1.y + p2.y) / 2) + 30;
// Compute the mid point of the line and get it closer to the line.
g.setColor(Color.BLACK);
g.drawString(String.valueOf(weight), midPointX, midPointY);
}
問題
私が抱えている問題は、JOptionPane
クラスを使用するときに発生します。新しいノードを追加するオプションを選択し、それを配置する場所を選択するとinputDialog
、ノードの名前を尋ねるポップアップが表示されます。
この動作が発生するため、ノードは正常に追加されます。
これは一般的な問題ですか。
paint
またはrepaint
おそらく問題?
それにもかかわらず、これは を呼び出すコードですinputDialog
:
Function addNode = functionFac.getInstance(state);
String name = "";
while(!name.matches("[A-Za-z]+")) {
name = JOptionPane.showInputDialog("Please enter the name of the node.", null);
}
addNode.execute(stage, new NodeMessage(arg0.getPoint(), name));
PS : 関数は、私が作成したインターフェイス タイプです。