我正在嘗試編寫一個程序,用它們之間的連線連接兩個點。首先,我想說,我知道drawline()
函數,但我不允許使用它(這是H.W賦值)。所以我的問題是,我設法編寫代碼來連接兩個點,但由於某種原因,每當我運行我的程序時,(0,0)像素始終處於打開狀態,並且在第一次鼠標單擊時,線條從(0,0)
繪製到第一個點擊座標。有人可以幫我弄清楚如何在沒有(o,o)
像素開啓的情況下運行應用程序。 另一件事,我想要做到它分開每一行(兩個點擊=行,另外兩個點擊=另一個單獨的行),這也是我正在努力實現的東西。如何繪製兩個點之間創建的點作爲鼠標點擊的結果
希望我的解釋夠好,任何幫助都會很棒! 這是我的代碼:
package com.mycompany;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class MousePanel extends JPanel implements MouseListener,ActionListener{
private int x,y,x2,y2,a=1;
public MousePanel(){
super();
addMouseListener(this);
}
public void paint(Graphics g){
int w = x2 - x ;
int h = y2 - y ;
int dx1 = 0, dy1 = 0, dx2 = 0, dy2 = 0 ;
if (w<0) dx1 = -1 ; else if (w>0) dx1 = 1 ;
if (h<0) dy1 = -1 ; else if (h>0) dy1 = 1 ;
if (w<0) dx2 = -1 ; else if (w>0) dx2 = 1 ;
int longest = Math.abs(w) ;
int shortest = Math.abs(h) ;
if (!(longest>shortest)) {
longest = Math.abs(h) ;
shortest = Math.abs(w) ;
if (h<0) dy2 = -1 ; else if (h>0) dy2 = 1 ;
dx2 = 0 ;
}
int numerator = longest >> 1 ;
for (int i=0;i<=longest;i++) {
g.fillRect(x,y,1,1);
numerator += shortest ;
if (!(numerator<longest)) {
numerator -= longest ;
x += dx1 ;
y += dy1 ;
} else {
x += dx2 ;
y += dy2 ;
}
}
}
public void mouseClicked(MouseEvent mouse){
x=x2;
y=y2;
x2 = mouse.getX();
y2 = mouse.getY();
repaint();
}
public void mouseEntered(MouseEvent mouse){ }
public void mouseExited(MouseEvent mouse){ }
public void mousePressed(MouseEvent mouse){ }
public void mouseReleased(MouseEvent mouse){ }
public static void main(String arg[]){
JFrame frame = new JFrame("MousePanel");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(640,640);
MousePanel panel = new MousePanel();
frame.setContentPane(panel);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
}
}
嗨,我不是100%確定我明白你的問題,但我想幫忙。 – Inversus
像[答案](http://stackoverflow.com/a/5797965/230513)見過[這裏](http://stackoverflow.com/q/5797862/230513)? – trashgod
不完全,生病試圖更好地解釋我的自我: 我的目標是建立程序來連接兩個點與一條線。 點座標應該是兩個單獨的鼠標點擊的結果。 第一次點擊會標記第一個點,第二個點擊會標記第二個點。 第二次點擊後,應該在這兩個點之間的屏幕上畫一條線,等等...... 一件重要的事情是我希望每一行都是獨特的,我的意思是第一和第二次點擊是一行,第三和第四 點擊是另一個單獨的行......希望這將解釋更好,謝謝! –