Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: GUI и Java FX приложения > Работа с графикой


Автор: goodday1941 27.7.2006, 17:26
Создал пользовательский интерфейс прожки (Swing). на одной панельки находится метка с картинкой, на второй кнопка... как сделать так что б при нажатии на кнопку поверх картинки рисовалась круглая точка размером 10 на 10 пикселей?
заранее благодарен... 

Автор: powerOn 27.7.2006, 18:36
переопределить метод public void paint(Graphics g) метки и выводить графику в нем.  

Автор: goodday1941 27.7.2006, 19:52
можна наглдянный примерчик?  smile  

Автор: powerOn 27.7.2006, 21:45
Код Метки:
Код

import java.awt.Graphics;
import javax.swing.JLabel;

public class MyLabel extends JLabel {

// Флаг необходимости прорисовки
    private boolean myDrawFlag = false;

    public boolean isMyDrawFlag() {
        return myDrawFlag;
    }

    public void setMyDrawFlag(boolean myDrawFlag) {
        this.myDrawFlag = myDrawFlag;
    }
    
    public MyLabel() {
    }
    
    public void paint(Graphics g) {
        super.paint(g);
        
        // рисуем что хотим на компоненте.
        if (myDrawFlag) {
            g.fillOval(10,10,20,20);
        }
    }
}


Код фрейма который эту метку использует:
Код

public class NewJFrame extends javax.swing.JFrame {

    public NewJFrame() {
        initComponents();
    }

    private void initComponents() {
        jButton1 = new javax.swing.JButton();
        myLabel1 = new MyLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        jButton1.setText("jButton1");
        jButton1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jButton1MouseClicked(evt);
            }
        });

        getContentPane().add(jButton1, java.awt.BorderLayout.SOUTH);

        myLabel1.setText("myLabel1");
        getContentPane().add(myLabel1, java.awt.BorderLayout.CENTER);

        pack();
    }

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
// Была нажата кнопка
        if (!myLabel1.isMyDrawFlag()) {
            myLabel1.setMyDrawFlag(true);
        } else {
            myLabel1.setMyDrawFlag(false);
        }
        repaint();
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }
    
    private javax.swing.JButton jButton1;
    private MyLabel myLabel1;
}

 

Автор: goodday1941 27.7.2006, 21:54
бальшое спасибо, щас буду разбираться  smile  

Автор: LSD 31.7.2006, 14:03
Или можно написать свою Icon:
Код
  public class MyIcon implements Icon
  {
    private Image image;

    public MyIcon(Image image)
    {
      this.image = image;
    }

    public void paintIcon(Component c, Graphics g, int x, int y)
    {
      g.drawImage(image, x, y, c);
      g.setColor(Color.WHITE);
      g.fillOval(x, y, 10, 10);
    }

    public int getIconWidth()
    {
      return image.getWidth(null);
    }

    public int getIconHeight()
    {
      return image.getHeight(null);
    }
  }
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)