öğesini tıklattığım çizimi çizmeyeceğim. Bu yüzden, kullanıcının tıkladığı bir çember çizmeye çalışıyorum. Bu, aşağıdaki çubuk tarafından yeniden boyutlandırılabilir. Her şey, çemberin istediğim yere çizmeyeceği dışında çalışır. Baska öneri? İşte Neden
İşte benim Paneliimport java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
import javax.swing.event.*;
public class TestClass extends JFrame {
private JSlider slide;
private MainClass myPanel;
public int x1=0;
public int y1=0;
public TestClass(){
super("The Title");
myPanel = new MainClass();
myPanel.setBackground(Color.YELLOW);
slide = new JSlider(SwingConstants.HORIZONTAL, 0, 200, 10);
slide.setMajorTickSpacing(10);
slide.setPaintTicks(true);
slide.addChangeListener(
new ChangeListener(){
public void stateChanged(ChangeEvent e){
myPanel.checkDiameter(slide.getValue());
}
}
);
HandlerClass handler = new HandlerClass();
slide.addMouseListener(handler);
add(slide, BorderLayout.SOUTH);
add(myPanel, BorderLayout.CENTER);
}
public int setX1(){
return x1;
}
public int setY1(){
return y1;
}
private class HandlerClass implements MouseListener{
@Override
public void mouseClicked(MouseEvent event) {
// TODO Auto-generated method stub
x1=event.getX();
y1=event.getY();
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
}
olan TestClass bir pencere oluşturur ve çağrı diğer önemli sınıftır;
import java.awt.*;
import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class MainClass extends JPanel{
private int d = 10;
public void paintComponent(Graphics g){
super.paintComponent(g);
TestClass values = new TestClass();
g.setColor(Color.CYAN);
g.fillOval(values.setX1()+50, values.setY1(), d, d);
}
public void checkDiameter(int newD)
{
//New format for if statements
d = (newD >= 0 ? newD //if
: 10//else
);
repaint();
}
public Dimension getPreferredSize(){
return new Dimension(200,200);
}
public Dimension getMinimumSize(){
return getPreferredSize();
}
}
Bu bir çok kod. Ne denedin, neyin işe yarayıp yaramadığı? –
sorunu yaratıyorsunuz 'TestClass değerleri = new TestClass();' boya metod.very içinde testclass nesnesi.çok kötü.çıkarın.çıkıyorsunuz yeni oluşturduğunuz nesneden değerler aldığınızdan beri 0 olsun 50 + 0 her zaman 0 nereye tıkladığınız önemli değil –
@FastSnail ile katılıyorum; Her tıklamada "TestClass" ı yeniden tahsis ediyorsunuz! Bu nedenle üye değişkenleri her zaman yeniden başlatılır. –