<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel>
    <title>Ophe's Feed - Programmer's Heaven</title>
    <link>http://www.programmersheaven.com/feed/User/325077/RSS.aspx</link>
    <description>Events at Programmer's Heaven related to the user Ophe.</description>
    <language>en</language>
    <copyright>Copyright 2013 Programmers Heaven</copyright>
    <pubDate>Wed, 19 Jun 2013 02:45:00 -0700</pubDate>
    <generator>Argotic Syndication Framework 2007.3.0.1, http://www.codeplex.com/Argotic</generator>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <ttl>360</ttl>
    <item>
      <title>Paint-problem</title>
      <link>http://www.programmersheaven.com/mb/java/374081/374081/ReadMessage.aspx#374081</link>
      <description>&lt;p&gt;Posted the message '&lt;a href="http://www.programmersheaven.com/mb/java/374081/374081/ReadMessage.aspx#374081"&gt;Paint-problem&lt;/a&gt;' on the &lt;a href="http://www.programmersheaven.com/mb/java/Board.aspx"&gt;Java&lt;/a&gt; forum.&lt;/p&gt;Hello!&lt;br /&gt;
&lt;br /&gt;
I'm having some problems with a boardgame I'm trying to make.&lt;br /&gt;
I manage to paint the graphics I want, but after about a second or two it all disappears, and I don't know how to make the painted graphics persist over time, and when the tabs are changed.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="sourcecode"&gt;/*
 * Thud.java
 *
 * Created on den 8 augusti 2008, 15:37
 */
package ophesthud;

import javax.swing.*;
import java.awt.*;
import java.applet.Applet;

import java.io.*;
import javax.imageio.*;

/**
 *
 * @author  Ophe
 */
public class Main extends JFrame {

    public int mouseX;
    public int mouseY;
    public Image DwarfImage = (new ImageIcon("4040dwarf.jpg")).getImage();
    public Image TrollImage = (new ImageIcon("4040troll.jpg")).getImage();    // Rad 1 heter rad 0
    // 1 = Dvärg
    // 2 = Troll
    // 3 = Sten    
    public int[][] pieces = {
        {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0},
        {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
        {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
        {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
        {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
        {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 1},
        {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
        {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
        {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
        {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
        {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
        {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0}
    };

    /** Creates new form Thud */
    public Main() {
        initComponents();
        Board.setIcon(new ImageIcon("board.jpg"));
    }

    @SuppressWarnings("unchecked")
    // &amp;lt;editor-fold defaultstate="collapsed" desc="Generated Code"&amp;gt;                          
    private void initComponents() {
        Tabs = new javax.swing.JTabbedPane();
        TabBoard = new javax.swing.JPanel();
        ScoreBar = new javax.swing.JProgressBar();
        jScrollPane1 = new javax.swing.JScrollPane();
        MovesList = new javax.swing.JTextArea();
        BoardPanel = new BPanel();
        Board = new javax.swing.JLabel();
        TabChat = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        TabRules = new javax.swing.JPanel();
        jScrollPane2 = new javax.swing.JScrollPane();
        jTextArea2 = new javax.swing.JTextArea();
        TabAbout = new javax.swing.JPanel();
        jScrollPane3 = new javax.swing.JScrollPane();
        jTextArea3 = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Ophe's Thud");
        setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        setMinimumSize(new java.awt.Dimension(200, 200));
        getContentPane().setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.CENTER, 0, 0));

        Tabs.setBackground(new java.awt.Color(153, 255, 255));
        Tabs.setMinimumSize(new java.awt.Dimension(50, 50));

        TabBoard.setBackground(new java.awt.Color(153, 255, 255));
        TabBoard.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        TabBoard.setForeground(new java.awt.Color(153, 255, 255));
        TabBoard.setLayout(new java.awt.BorderLayout());

        ScoreBar.setMaximum(32);
        ScoreBar.setMinimum(-32);
        ScoreBar.setToolTipText("Score");
        ScoreBar.setFocusable(false);
        ScoreBar.setIndeterminate(true);
        ScoreBar.setString("50");
        TabBoard.add(ScoreBar, java.awt.BorderLayout.PAGE_END);

        jScrollPane1.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane1.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        jScrollPane1.setMaximumSize(new java.awt.Dimension(32767, 600));

        MovesList.setColumns(20);
        MovesList.setRows(5);
        jScrollPane1.setViewportView(MovesList);

        TabBoard.add(jScrollPane1, java.awt.BorderLayout.LINE_END);

        BoardPanel.setLayout(new java.awt.GridLayout(1, 1));

        Board.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
        Board.setMaximumSize(new java.awt.Dimension(800, 800));
        Board.setMinimumSize(new java.awt.Dimension(600, 600));
        Board.setPreferredSize(new java.awt.Dimension(600, 600));
        Board.addMouseListener(new java.awt.event.MouseAdapter() {

            public void mouseClicked(java.awt.event.MouseEvent evt) {
                BoardMouseClicked(evt);
            }
        });
        BoardPanel.add(Board);

        TabBoard.add(BoardPanel, java.awt.BorderLayout.CENTER);

        Tabs.addTab("Board", TabBoard);

        jLabel1.setText("jLabel1");

        javax.swing.GroupLayout TabChatLayout = new javax.swing.GroupLayout(TabChat);
        TabChat.setLayout(TabChatLayout);
        TabChatLayout.setHorizontalGroup(
                TabChatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(TabChatLayout.createSequentialGroup().addGap(203, 203, 203).addComponent(jLabel1).addContainerGap(537, Short.MAX_VALUE)));
        TabChatLayout.setVerticalGroup(
                TabChatLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(TabChatLayout.createSequentialGroup().addGap(116, 116, 116).addComponent(jLabel1).addContainerGap(493, Short.MAX_VALUE)));

        Tabs.addTab("Chat", TabChat);

        jScrollPane2.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane2.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);

        jTextArea2.setColumns(20);
        jTextArea2.setRows(5);
        jScrollPane2.setViewportView(jTextArea2);

        javax.swing.GroupLayout TabRulesLayout = new javax.swing.GroupLayout(TabRules);
        TabRules.setLayout(TabRulesLayout);
        TabRulesLayout.setHorizontalGroup(
                TabRulesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(TabRulesLayout.createSequentialGroup().addContainerGap().addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 754, Short.MAX_VALUE).addContainerGap()));
        TabRulesLayout.setVerticalGroup(
                TabRulesLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(TabRulesLayout.createSequentialGroup().addContainerGap().addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE).addContainerGap()));

        Tabs.addTab("Rules", TabRules);

        jScrollPane3.setHorizontalScrollBarPolicy(javax.swing.ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        jScrollPane3.setVerticalScrollBarPolicy(javax.swing.ScrollPaneConstants.VERTICAL_SCROLLBAR_NEVER);

        jTextArea3.setColumns(20);
        jTextArea3.setRows(5);
        jScrollPane3.setViewportView(jTextArea3);

        javax.swing.GroupLayout TabAboutLayout = new javax.swing.GroupLayout(TabAbout);
        TabAbout.setLayout(TabAboutLayout);
        TabAboutLayout.setHorizontalGroup(
                TabAboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(TabAboutLayout.createSequentialGroup().addContainerGap().addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 754, Short.MAX_VALUE).addContainerGap()));
        TabAboutLayout.setVerticalGroup(
                TabAboutLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addGroup(TabAboutLayout.createSequentialGroup().addContainerGap().addComponent(jScrollPane3, javax.swing.GroupLayout.DEFAULT_SIZE, 601, Short.MAX_VALUE).addContainerGap()));

        Tabs.addTab("About", TabAbout);

        getContentPane().add(Tabs);

        getAccessibleContext().setAccessibleDescription("Ophe's Thud");

        pack();
    }// &amp;lt;/editor-fold&amp;gt;                        

    private void BoardMouseClicked(java.awt.event.MouseEvent evt) {
        int x = 1 + evt.getX() / 40;
        int y = 1 + evt.getY() / 40;
        mouseX = x * 40 - 10;
        mouseY = y * 40 + 35;
        MovesList.setText("(" + x + "," + y + ") : " + pieces[x - 1][y - 1]);
        repaint();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new Thud().setVisible(true);
            }
        });
    }

    public class BPanel extends JPanel {

        public BPanel() {
        }
        
        @Override
        public void paint(Graphics g) {
            super.paint(g);
            Graphics2D g2 = (Graphics2D) g;
            g2.setColor(Color.red);
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                    RenderingHints.VALUE_ANTIALIAS_ON);
            int i;
            int j;
            for (i = 0; i &amp;lt; 15; i++) {
                for (j = 0; j &amp;lt; 15; j++) {
                    if (pieces[i][j] == 1) {

                        g2.drawImage(DwarfImage, i * 40 + 11, j * 40 + 60, this);
                    } else if (pieces[i][j] == 2) {
                        g2.drawImage(TrollImage, i * 40 + 11, j * 40 + 60, this);
                    }
                }
            }
        }
    }
    
    // Variables declaration - do not modify                     
    private javax.swing.JLabel Board;
    private javax.swing.JPanel BoardPanel;
    private javax.swing.JTextArea MovesList;
    private javax.swing.JProgressBar ScoreBar;
    private javax.swing.JPanel TabAbout;
    private javax.swing.JPanel TabBoard;
    private javax.swing.JPanel TabChat;
    private javax.swing.JPanel TabRules;
    private javax.swing.JTabbedPane Tabs;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JTextArea jTextArea2;
    private javax.swing.JTextArea jTextArea3;
    // End of variables declaration                   
}
&lt;/pre&gt;&lt;br /&gt;</description>
      <guid isPermaLink="true">http://www.programmersheaven.com/mb/java/374081/374081/ReadMessage.aspx#374081</guid>
      <pubDate>Mon, 11 Aug 2008 07:23:22 -0700</pubDate>
    </item>
  </channel>
</rss>