Help me on my code
Hi am new to java and swings.. I am just learing it now.. I have a code with me.. In this flood fills the whole background..As fas as i know its a transparent background. how can i make it as a solid one. How can i just fill the shape in which my mouse pointer is in..
private void init() {
clip = Toolkit.getDefaultToolkit().getSystemClipboard();
this.zoom = 1;
if (img == null) {
this.setImageSize(Integer.parseInt(width), Integer.parseInt(height), false);
this.setPreferredSize(new Dimension(img.getWidth() * zoom, img.getHeight() * zoom));
this.addMouseListener(this);
this.addMouseMotionListener(this);
this.addMouseWheelListener(this);
this.addKeyListener(this);
private void setImageSize(int width, int height, boolean copyOld) {
BufferedImage old = img;
img = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
if (old != null && copyOld) {
Graphics g = img.getGraphics();
g.drawImage(old, 0, 0, null);
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
//zoomed bits
g2.scale((double) zoom, (double) zoom);
g2.setColor(bgColor);
g2.fillRect(0, 0, img.getWidth(), img.getHeight());
//unzoomded bits
g2.drawImage(img, 0, 0, null);
//displayObjects
for (int i = 0; i < displayObjects.size(); i++) {
JImagePaintObject paintObject = (JImagePaintObject) displayObjects.get(i);
paintObject.addToGraphics(g2);
//paint objects
g2.drawImage(getObjectsImage(paintObjects), 0, 0, null);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//paint highlight points for those objects selected
if (currentMode == JImagePaintPanel.MODE_SELECT) {
for (int o = 0; o < selectedObjects.size(); o++) {
g2.setColor(Color.magenta);
JImagePaintObject paintObject = (JImagePaintObject) selectedObjects.get(o);
Point2D[] points = paintObject.getHighlightPoints();
for (int i = 0; i < points.length; i++) {
Point2D point = points;
g2.translate(paintObject.getTranslation()[0], paintObject.getTranslation()[1]);
g2.setStroke(new BasicStroke((float) (1.0 / zoom)));
RoundRectangle2D.Double rect = new RoundRectangle2D.Double((point.getX() - 2), (point.getY() - 2), 5, 5, 2, 2);
g2.draw(rect);
g2.translate(-paintObject.getTranslation()[0], -paintObject.getTranslation()[1]);
private void flood(Point initPoint, int rgb, int newRGB) {
ArrayList queue = new ArrayList();
boolean[][] seen = new boolean[img.getWidth()][img.getHeight()];
queue.add(initPoint);
while (queue.size() > 0) {
Point p = (Point) queue.remove(0);
int i = p.x;
int j = p.y;
if (seen[i][j]) {
continue;
seen[i][j] = true;
if (img.getRGB(i, j) == rgb) {
img.setRGB(i, j, newRGB);
img.getRaster().setSample(i, j, 3, 255);
if (i > 0 && !seen[i - 1][j]) {
queue.add(new Point(i - 1, j));
if (i < img.getWidth() - 1 && !seen[i + 1][j]) {
queue.add(new Point(i + 1, j));
if (j > 0 && !seen[i][j - 1]) {
queue.add(new Point(i, j - 1));
if (j < img.getHeight() - 1 && !seen[i][j + 1]) {
queue.add(new Point(i, j + 1));
public void mousePressed(MouseEvent e) {
this.requestFocus();
if ((e.getModifiersEx() & MouseEvent.BUTTON3_DOWN_MASK) == MouseEvent.BUTTON3_DOWN_MASK) {
dragDown = e.getPoint();
this.preCursor = this.getCursor();
this.setCursor(new Cursor(Cursor.HAND_CURSOR));
else if ((e.getModifiersEx() & MouseEvent.BUTTON1_DOWN_MASK) == MouseEvent.BUTTON1_DOWN_MASK) {
if (currentMode == JImagePaintPanel.MODE_FLOOD) {
int rgb = img.getRGB(e.getPoint().x / zoom, e.getPoint().y / zoom);
this.flood(new Point(e.getPoint().x / zoom, e.getPoint().y / zoom), rgb, this.getDrawColor().getRGB());
this.updatePanel();
this.updatePanel();
I've been over your code a few times now, and I don't see anything logically wrong with it. In fact it correctly filled in a few shapes I tested. Only performance changes can be made.
ArrayList queue = new ArrayList();
boolean[][] seen = new boolean[img.getWidth()][img.getHeight()];An ArrayList is probably the worst collection to choose for a Queue. In an ArrayList, everytime the head element is removed all the elements above it nead to be shifted. Any of the lists that implement the Queue interface will provide a much better alternative.
java.util.Queue queue = new java.util.LinkedList();or if you are using java 1.6
java.util.Queue queue = new java.util.ArrayDeque();The boolean array would also be better served as a java.util.Bitset which will take up 8 times less memory and even performs a little faster than the corresponding 2D boolean array. The reason it takes up 8 times less memory is because the JVM treats each boolean array as a byte array in the background.
BitSet seen = new BitSet(img.getWidth() * img.getHeight());
//and for pixel (x,y)
int bitIndex = y * img.getWidth() + x;
BitSet#set(bitIndex);
BitSet#get(bitIndex);
BitSet#clear(bitIndex);The algorithm can also be implemented so that a boolean array or BitSet is not needed. The [wikipedia entry on the subject|http://en.wikipedia.org/wiki/Flood_fill] is pretty good.
Here's sort of a generic one I came up. It uses the the scanline approach mentioned in the Wikipedia article. The speed of it is unimpressive (when compared to MS Paint). A faster implementation would be to avoid creating Point objects, and to avoid the use of getRGB(...) and setRGB(...) to manipulate pixel data (and instead move to a lower level like the raster or data buffer).
public static void floodFill(BufferedImage img,
int x, int y, int newRGB) {
int oldRGB = img.getRGB(x,y);
if(oldRGB == newRGB) return;
java.awt.Graphics2D g2 = img.createGraphics();
g2.setColor(new java.awt.Color(newRGB));
java.util.Deque<Point> stack =
new java.util.ArrayDeque<Point>();
stack.add(new Point(x,y));
while(stack.size() > 0) {
Point p = stack.pop();
x = p.x; y = p.y;
img.setRGB(x, y, newRGB);
int x1 = x-1;
while(x1 > 0 &&
img.getRGB(x1, y) == oldRGB) {
x1--;
x1++;
int x2 = x+1;
while(x2 < img.getWidth() &&
img.getRGB(x2, y) == oldRGB) {
x2++;
x2--;
g2.drawLine(x1,y,x2,y);
if(y > 0) {
boolean inScanline = false;
for(int i = x1; i <= x2; i++) {
boolean isTargetColor = img.getRGB(i, y-1) == oldRGB;
if(!inScanline && isTargetColor) {
stack.push(new Point(i,y-1));
inScanline = true;
}else if (inScanline && !isTargetColor) {
inScanline = false;
if(y < img.getHeight()-1) {
boolean inScanline = false;
for(int i = x1; i <= x2; i++) {
boolean isTargetColor = img.getRGB(i, y+1) == oldRGB;
if(!inScanline && isTargetColor) {
stack.push(new Point(i,y+1));
inScanline = true;
}else if (inScanline && !isTargetColor) {
inScanline = false;
}
Similar Messages
-
Can somebody help me with this code?
Can anyone help me with this code? My problem is that i can't
seem to position this form, i want to be able to center it
vertically & horizontally in a div either using CSS or any
other means.
<div id="searchbar"><!--Search Bar -->
<div id="searchcart">
<div class="serchcartcont">
<form action='
http://www.romancart.com/search.asp'
name="engine" target=searchwin id="engine">
<input type=hidden value=????? name=storeid>
<input type=text value='' name=searchterm>
<input type=submit value='Go'> </form>
</div>
</div>
<div class="searchcont">Search For
Products:</div>
</div><!-- End Search Bar -->
Pleasssssseeeeeeee Help
ThanksHi,
Your form is defined in a div named "serchcartcont", you can
use attributes like position and align of the div to do what you
want to do. But there are two more dives above this dive, you will
have define the height width of these before you can center align
the inner most div. If you are not defining the height & width
then by default it decide it automatically to just fit the content
in it.
Hope this helps.
Maneet
LeXolution IT Services
Web Development
Company -
Used createinstallmedis to make a copy of the Mavericks app for use in a new hard drive install.. Copied find but gave error code 110 and failed to make the flash drive bootable.. Any help in what errror code means?
Did you partition and format the flash drive first? See the following:
Make Your Own Mavericks, Mountain/Lion Installer
After downloading the installer you must first save the Install Mac OS X application. After the installer downloads DO NOT click on the Install button. Go to your Applications folder and make a copy of the installer. Move the copy into your Downloads folder. Now you can click on the Install button. You must do this because the installer deletes itself automatically when it finishes installing.
2. Get a USB flash drive that is at least 8 GBs. Prep this flash drive as follows:
Open Disk Utility in your Utilities folder.
After DU loads select your flash drive (this is the entry with the mfgr.'s ID and size) from the leftside list. Under the Volume Scheme heading set the number of partitions from the drop down menu to one. Set the format type to Mac OS Extended (Journaled.) Click on the Options button, set the partition scheme to GUID then click on the OK button. Click on the Partition button and wait until the process has completed.
Select the volume you just created (this is the sub-entry under the drive entry) from the left side list.
Click on the Erase tab in the DU main window.
Set the format type to Mac OS Extended (Journaled.) Click on the Options button, check the button for Zero Data and click on OK to return to the Erase window.
Click on the Erase button. The format process can take up to an hour depending upon the flash drive size.
Make your own Mavericks flash drive installer using the Mavericks tool:
Mavericks has its own built-in installer maker you use via the Terminal:
You will need a freshly partitioned and formatted USB flash drive with at least 8GBs. Leave the name of the flash drive at the system default, "Untitled." Do not change this name. Open the Terminal in the Utilities folder. Copy this command line after the prompt in the Terminal's window:
sudo /Applications/Install\ OS\ X\ Mavericks.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install\ OS\ X\ Mavericks.app --nointeraction
Press RETURN. Enter your admin password when prompted. It will not be echoed to the screen so be careful to enter it correctly. Press RETURN, again.
Wait for the process to complete which will take quite some time. -
Hi guys, I need help in debugging this code I made, which is a GUI minesweeper. Its extremely buggy...I particularly need help fixing the actionListener part of the code as everytime I press a button on the GUI, an exception occurs.
help please!
package minesweeperGUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MinesweeperGUI implements ActionListener
//Declaration of attributes
static int length = 0;
JMenuItem menuItemNew = new JMenuItem();
JRadioButtonMenuItem rbEasy = new JRadioButtonMenuItem();
JRadioButtonMenuItem rbHard = new JRadioButtonMenuItem();
JMenuItem menuItemExit = new JMenuItem();
JButton buttonReset = new JButton();
JButton buttonGrid[][] = null;
JFrame frame = new JFrame();
int getBombsTotal = 0;
JLabel setBombsLabel = new JLabel();
int a = 0;
int b = 0;
//No constructor created. Uses default constructor
//Create the menu bar
public JMenuBar newMenuBar()
//Sets up the menubar
JMenuBar menuBar = new JMenuBar();
//Sets up the Game menu with choice of new, grid size, and exit
JMenu menu = new JMenu ("Game");
menuBar.add (menu);
menuItemNew = new JMenuItem ("New");
menuItemNew.addActionListener (this);
menu.add (menuItemNew);
menu.addSeparator();
//Sets up sub-menu for grid size with choice of easy and hard radio buttons
JMenu subMenu = new JMenu ("Grid Size");
rbEasy = new JRadioButtonMenuItem ("Easy: 5x5 grid");
rbEasy.addActionListener (this);
subMenu.add (rbEasy);
rbHard = new JRadioButtonMenuItem ("Hard: 10x10 grid");
rbHard.addActionListener (this);
subMenu.add (rbHard);
menu.add (subMenu);
menu.addSeparator();
menuItemExit = new JMenuItem ("Exit");
menuItemExit.addActionListener (this);
menu.add (menuItemExit);
return menuBar;
//Setting up of Bomb Grid
public int [][] setGrid (int length)
int grid[][] = null;
grid = new int[length][length];
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
grid[i][j] = ((int)Math.round(Math.random() * 10))% 2;
return grid;
//Setting up of the of the graphical bomb grid
public JButton[][] setButtonGrid (int length)
JButton buttonGrid[][] = null;
buttonGrid = new JButton[length][length];
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
buttonGrid[i][j] = new JButton();
return buttonGrid;
//Setting up of a way to count the total number of bombs in the bomb grid
public int getBombsTotal (int length, int setGrid[][])
int bombsTotal = 0;
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
if (setGrid[i][j] == 1)
bombsTotal += 1;
return bombsTotal;
//Create a label for number of bombs left
public JLabel setBombsLabel (int getBombsTotal)
JLabel bombsLabel = new JLabel(String.valueOf (getBombsTotal) + " Bombs Left");
return bombsLabel;
//Setting up a way to count the number of bombs around a button
public String setBombs (int length, int setGrid[][], int x, int y)
int bombs[][] = new int[length][length];
String bombsString = null;
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
if (i == 0 && j == 0)
bombs[i][j] = setGrid[i][j+1] + setGrid[i+1][j] +
setGrid[i+1][j+1];
else if (i ==0 && j == (length - 1))
bombs[i][j] = setGrid[i][j-1] + setGrid[i+1][j-1] +
setGrid[i+1][j];
else if (i == (length - 1) && j == 0)
bombs[i][j] = setGrid[i-1][j] + setGrid[i-1][j+1] +
setGrid[i][j+1];
else if (i == (length - 1) && j == (length - 1))
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i][j-1];
else if (i == 0 && j != 0 && j != (length - 1))
bombs[i][j] = setGrid[i][j-1] + setGrid[i][j+1] +
setGrid[i+1][j-1] + setGrid[i+1][j] +
setGrid[i+1][j+1];
else if (i == (length - 1) && j != 0 && j != (length - 1))
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i-1][j+1] + setGrid[i][j-1] +
setGrid[i][j+1];
else if (i != 0 && i != (length - 1) && j == 0)
bombs[i][j] = setGrid[i-1][j] + setGrid[i-1][j+1] +
setGrid[i][j+1] + setGrid[i+1][j] +
setGrid[i+1][j+1];
else if (i != 0 && i != (length - 1) && j == (length - 1))
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i][j-1] + setGrid[i+1][j-1] +
setGrid[i+1][j];
else
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i-1][j+1] + setGrid[i][j-1] +
setGrid[i][j+1] + setGrid[i+1][j-1] +
setGrid[i+1][j] + setGrid[i+1][j+1];
bombsString = String.valueOf (bombs[x][y]);
return bombsString;
//create the panel for the bombs label and reset button
public JPanel newTopPanel(int length)
int setGridNew [][] = null;
setGridNew = new int[length][length];
int getBombsTotalNew = 0;
JLabel setBombsLabelNew = new JLabel();
setGridNew = setGrid (length);
getBombsTotalNew = getBombsTotal (length, setGridNew);
setBombsLabelNew = setBombsLabel (getBombsTotalNew);
JPanel topPanel = new JPanel ();
topPanel.setLayout (new BorderLayout (50,50));
JLabel bombsLabel = new JLabel ();
bombsLabel = setBombsLabelNew;
topPanel.add (bombsLabel, BorderLayout.WEST);
buttonReset = new JButton("Reset");
buttonReset.addActionListener (this);
topPanel.add (buttonReset, BorderLayout.CENTER);
return topPanel;
//create the panel for the play grids
public JPanel newBottomPanel(int length)
JButton setButtonGridNew[][] = null;
setButtonGridNew = new JButton [length][length];
setButtonGridNew = setButtonGrid (length);
JPanel bottomPanel = new JPanel ();
bottomPanel.setLayout (new GridLayout (length, length));
buttonGrid = new JButton[length][length];
for (a = 0; a < length; a++)
for (b = 0; b < length; b++)
buttonGrid[a] = setButtonGridNew[a][b];
buttonGrid[a][b].addActionListener (this);
bottomPanel.add (buttonGrid[a][b]);
return bottomPanel;
//Overiding of abstract method actionPerformed
public void actionPerformed(ActionEvent e)
if (e.getSource() == menuItemNew)
launchFrame(length);
else if (e.getSource() == menuItemExit)
frame.setVisible (false);
System.exit(0);
else if (e.getSource() == rbEasy)
length = 5;
launchFrame(length);
else if (e.getSource() == rbHard)
length = 10;
launchFrame(length);
else if (e.getSource() == buttonReset)
launchFrame(length);
else if (e.getSource() == buttonGrid[a][b])
int setGridNew [][] = null;
setGridNew = new int[length][length];
JButton bombButton [][] = null;
bombButton = new JButton [length][length];
String bombString [][] = null;
bombString = new String[length][length];
setGridNew = setGrid (length);
bombString[a][b] = setBombs (length, setGridNew, a, b);
bombButton[a][b] = new JButton (bombString[a][b]);
if (setGridNew[a][b] == 0)
buttonGrid[a][b] = bombButton[a][b];
getBombsTotal--;
JLabel setBombsLabelNew = new JLabel();
setBombsLabelNew = setBombsLabel (getBombsTotal);
else if (setGridNew[a][b] == 1 )
buttonGrid[a][b] = new JButton("x");
JOptionPane.showMessageDialog (null, "Game Over. You hit a Bomb!");
System.exit(0);
//create the content pane
public Container newContentPane(int length)
JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
topPanel = newTopPanel(length);
bottomPanel = newBottomPanel (length);
JPanel contentPane = new JPanel();
contentPane.setOpaque (true);
contentPane.setLayout (new BorderLayout(50,50));
contentPane.add (topPanel, BorderLayout.NORTH);
contentPane.add (bottomPanel, BorderLayout.CENTER);
return contentPane;
public void launchFrame (int length)
//Makes sure we have nice window decorations
JFrame.setDefaultLookAndFeelDecorated(true);
//Sets up the top-level window
frame = new JFrame ("Minesweeper");
//Exits program when the closed button is clicked
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
Container contentPane = new Container();
menuBar = newMenuBar();
contentPane = newContentPane (length);
//Sets up the menu bar and content pane
frame.setJMenuBar (menuBar);
frame.setContentPane (contentPane);
//Displays the window
frame.pack();
frame.setVisible (true);
public static void main (String args[])
//Default length is 5
length = 5;
MinesweeperGUI minesweeper = new MinesweeperGUI();
minesweeper.launchFrame(length);hi, thanks. that removed the exception; although now the buttons action listener won't work :(
here is the revised code:
To anyone out there, can you guys run this code and help me debug it?
I'm really desperate as this is a school project of mine and the deadline is 7 hours away. I have already been working on it for 3 days, but the program is still very buggy.
thanks!
/* Oliver Ian C. Wee 04-80112
* CS12 MHRU
* Machine Problem 2
package minesweeperGUI;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MinesweeperGUI implements ActionListener
//Declaration of attributes
static int length = 0;
JMenuItem menuItemNew = new JMenuItem();
JRadioButtonMenuItem rbEasy = new JRadioButtonMenuItem();
JRadioButtonMenuItem rbHard = new JRadioButtonMenuItem();
JMenuItem menuItemExit = new JMenuItem();
JButton buttonReset = new JButton();
JButton buttonGrid[][] = null;
JFrame frame = new JFrame();
int getBombsTotal = 0;
JLabel setBombsLabel = new JLabel();
int a = 0;
int b = 0;
//No constructor created. Uses default constructor
//Create the menu bar
public JMenuBar newMenuBar()
//Sets up the menubar
JMenuBar menuBar = new JMenuBar();
//Sets up the Game menu with choice of new, grid size, and exit
JMenu menu = new JMenu ("Game");
menuBar.add (menu);
menuItemNew = new JMenuItem ("New");
menuItemNew.addActionListener (this);
menu.add (menuItemNew);
menu.addSeparator();
//Sets up sub-menu for grid size with choice of easy and hard radio buttons
JMenu subMenu = new JMenu ("Grid Size");
ButtonGroup bg = new ButtonGroup();
rbEasy = new JRadioButtonMenuItem ("Easy: 5x5 grid");
bg.add (rbEasy);
rbEasy.addActionListener (this);
subMenu.add (rbEasy);
rbHard = new JRadioButtonMenuItem ("Hard: 10x10 grid");
bg.add (rbHard);
rbHard.addActionListener (this);
subMenu.add (rbHard);
menu.add (subMenu);
menu.addSeparator();
menuItemExit = new JMenuItem ("Exit");
menuItemExit.addActionListener (this);
menu.add (menuItemExit);
return menuBar;
//Setting up of Bomb Grid
public int [][] setGrid (int length)
int grid[][] = null;
grid = new int[length][length];
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
grid[i][j] = ((int)Math.round(Math.random() * 10))% 2;
return grid;
//Setting up of the of the graphical bomb grid
public JButton[][] setButtonGrid (int length)
JButton buttonGrid[][] = null;
buttonGrid = new JButton[length][length];
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
buttonGrid[i][j] = new JButton();
return buttonGrid;
//Setting up of a way to count the total number of bombs in the bomb grid
public int getBombsTotal (int length, int setGrid[][])
int bombsTotal = 0;
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
if (setGrid[i][j] == 1)
bombsTotal += 1;
return bombsTotal;
//Create a label for number of bombs left
public JLabel setBombsLabel (int getBombsTotal)
JLabel bombsLabel = new JLabel(" " +String.valueOf (getBombsTotal) + " Bombs Left");
return bombsLabel;
//Setting up a way to count the number of bombs around a button
public String setBombs (int length, int setGrid[][], int x, int y)
int bombs[][] = new int[length][length];
String bombsString = null;
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
if (i == 0 && j == 0)
bombs[i][j] = setGrid[i][j+1] + setGrid[i+1][j] +
setGrid[i+1][j+1];
else if (i ==0 && j == (length - 1))
bombs[i][j] = setGrid[i][j-1] + setGrid[i+1][j-1] +
setGrid[i+1][j];
else if (i == (length - 1) && j == 0)
bombs[i][j] = setGrid[i-1][j] + setGrid[i-1][j+1] +
setGrid[i][j+1];
else if (i == (length - 1) && j == (length - 1))
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i][j-1];
else if (i == 0 && j != 0 && j != (length - 1))
bombs[i][j] = setGrid[i][j-1] + setGrid[i][j+1] +
setGrid[i+1][j-1] + setGrid[i+1][j] +
setGrid[i+1][j+1];
else if (i == (length - 1) && j != 0 && j != (length - 1))
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i-1][j+1] + setGrid[i][j-1] +
setGrid[i][j+1];
else if (i != 0 && i != (length - 1) && j == 0)
bombs[i][j] = setGrid[i-1][j] + setGrid[i-1][j+1] +
setGrid[i][j+1] + setGrid[i+1][j] +
setGrid[i+1][j+1];
else if (i != 0 && i != (length - 1) && j == (length - 1))
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i][j-1] + setGrid[i+1][j-1] +
setGrid[i+1][j];
else
bombs[i][j] = setGrid[i-1][j-1] + setGrid[i-1][j] +
setGrid[i-1][j+1] + setGrid[i][j-1] +
setGrid[i][j+1] + setGrid[i+1][j-1] +
setGrid[i+1][j] + setGrid[i+1][j+1];
bombsString = String.valueOf (bombs[x][y]);
return bombsString;
//create the panel for the bombs label and reset button
public JPanel newTopPanel(int length)
int setGridNew [][] = null;
setGridNew = new int[length][length];
int getBombsTotalNew = 0;
JLabel setBombsLabelNew = new JLabel();
setGridNew = setGrid (length);
getBombsTotalNew = getBombsTotal (length, setGridNew);
setBombsLabelNew = setBombsLabel (getBombsTotalNew);
JPanel topPanel = new JPanel ();
topPanel.setLayout (new BorderLayout (20,20));
JLabel bombsLabel = new JLabel ();
bombsLabel = setBombsLabelNew;
topPanel.add (bombsLabel, BorderLayout.WEST);
buttonReset = new JButton("Reset");
buttonReset.addActionListener (this);
topPanel.add (buttonReset, BorderLayout.CENTER);
return topPanel;
//create the panel for the play grids
public JPanel newBottomPanel(int length)
JButton setButtonGridNew[][] = null;
setButtonGridNew = new JButton [length][length];
setButtonGridNew = setButtonGrid (length);
JPanel bottomPanel = new JPanel ();
bottomPanel.setLayout (new GridLayout (length, length));
buttonGrid = new JButton[length][length];
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
buttonGrid[i][j] = setButtonGridNew[i][j];
buttonGrid[i][j].addActionListener (this);
bottomPanel.add (buttonGrid[i][j]);
return bottomPanel;
//Overiding of abstract method actionPerformed
public void actionPerformed(ActionEvent e)
if (e.getSource() == menuItemNew)
closeFrame();
launchFrame(length);
else if (e.getSource() == menuItemExit)
frame.setVisible (false);
System.exit(0);
else if (e.getSource() == rbEasy)
closeFrame();
length = 5;
launchFrame(length);
else if (e.getSource() == rbHard)
closeFrame();
length = 10;
launchFrame(length);
else if (e.getSource() == buttonReset)
closeFrame();
launchFrame(length);
else if (e.getSource() == buttonGrid[a])
int setGridNew [][] = null;
setGridNew = new int[length][length];
JButton bombButton [][] = null;
bombButton = new JButton [length][length];
String bombString [][] = null;
bombString = new String[length][length];
setGridNew = setGrid (length);
for (int i = 0; i < length; i++)
for (int j = 0; j < length; j++)
bombString[i][j] = setBombs (length, setGridNew, i, j);
bombButton[i][j] = new JButton (bombString[i][j]);
if (setGridNew[a][b] == 0)
buttonGrid[a][b] = bombButton[a][b];
getBombsTotal--;
JLabel setBombsLabelNew = new JLabel();
setBombsLabelNew = setBombsLabel (" " String.valueOf (getBombsTotal) " Bombs Left");
else if (setGridNew[a][b] == 1 )
buttonGrid[a][b] = new JButton("x");
JOptionPane.showMessageDialog (null, "Game Over. You hit a Bomb!");
System.exit(0);
//create the content pane
public Container newContentPane(int length)
JPanel topPanel = new JPanel();
JPanel bottomPanel = new JPanel();
topPanel = newTopPanel(length);
bottomPanel = newBottomPanel (length);
JPanel contentPane = new JPanel();
contentPane.setOpaque (true);
contentPane.setLayout (new BorderLayout(5,5));
contentPane.add (topPanel, BorderLayout.NORTH);
contentPane.add (bottomPanel, BorderLayout.CENTER);
return contentPane;
public void closeFrame ()
frame = new JFrame ("Minesweeper");
frame.dispose();
public void launchFrame (int length)
//Makes sure we have nice window decorations
JFrame.setDefaultLookAndFeelDecorated(true);
//Sets up the top-level window
frame = new JFrame ("Minesweeper");
//Exits program when the closed button is clicked
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
JMenuBar menuBar = new JMenuBar();
Container contentPane = new Container();
menuBar = newMenuBar();
contentPane = newContentPane (length);
//Sets up the menu bar and content pane
frame.setJMenuBar (menuBar);
frame.setContentPane (contentPane);
//Displays the window
frame.pack();
frame.setVisible (true);
public static void main (String args[])
//Default length is 5
length = 5;
MinesweeperGUI minesweeper = new MinesweeperGUI();
minesweeper.launchFrame(length); -
Pulling the condition records - help in the ABAP code -urgent!!!!!
hi folks,
I need some urgent help here..
I have discussed this portion before in the forum but there are some changes and I need some help here.
The code goes like this....
select knumv kschl kbetr kwert
from konv into table cdata
for all entries in bodyitab21
where konv~knumv = bodyitab21-knumv
and konv~kwert > 0.
I am successfully pulling the data into cdata here..
I need to check for various condition types that are around 100. I need to split them into two types because some condition types containe just pricing values while some others have values in % (but the value not stored in that format) To do the extra coding I have use two differetn case statements and that's what i have done here.
<b>My probelm is I will have to check for each condition type, if the 'kwert' field has some value in it pull the data and there is a condition text associcated to it in the table 'T685T' that needs to be pulled into the itab.
This process has to be done for every condition type.</b>Given this scenario how can i do it?
loop at cdata into wac.
case wac-kschl.
when 'ZRAT' OR 'ZAGR' OR 'ZRCR' OR 'Y098' OR 'Y007' OR 'ZREW' OR 'Y106' OR 'ZTSR' OR 'Y127' OR 'Y125' OR 'Y126' OR 'Y124' OR 'Y157' OR 'Y092' OR 'Y085' OR 'Y090' OR 'ZMZD' OR 'Y215' OR 'Y214' OR 'Y111' OR 'ZC$D' OR 'ZAUD' OR 'ZTHX' OR 'ZCOL'
OR 'ZCFE' OR ZSPA' OR 'ZBOX' OR 'ZCOR' OR 'Y130' OR 'ZBOR'
OR 'Y108' OR 'ZFPP' OR 'Y204' OR 'Y200' OR 'Y202' OR 'Y201' OR 'Y203' OR 'Y002' OR 'ZSCR' OR 'Y128' OR 'Y100' OR 'ZABS' OR 'ZSMG' OR 'ZFRE' OR 'ZREC' OR 'ZCOM' OR 'ZPMG' OR 'BEMG' OR 'ZDTI' OR'ZBET'.
<b>***** the first set of these condition types have just values</b> if wac-kbetr = ' ' AND wac-kwert = ' '.
continue.
else.
p = wac-kbetr.
i = p.
c = i.
MOVE c to w_accitab-zrate.
MOVE wac-kbetr to w_accitab-zrate.
MOVE wac-kwert to w_accitab-zsubtotal.
endif.
when 'ZSED' OR 'ZRFQ' OR 'ZIMP' OR 'ZERR'
OR 'ZECD' 'ZAC1' OR 'ZAC%' OR 'ZAC2' OR 'ZSED' OR 'ZRFQ' OR 'ZIMP' OR 'ZERR' OR 'ZECD' 'ZQUD' OR 'ZEMP' OR 'Y101' OR 'Y012' OR 'ZCHU' OR 'Y054' OR 'Y065' OR 'Y066' OR 'Y067' OR 'Y068' OR 'Y069' OR 'Y096'
OR 'Y103' OR 'Y010' OR 'Y070' OR 'Y071' OR
'Y072' OR 'Y073' OR 'Y074' OR 'Y075' OR 'Y076'
OR 'Y077' OR 'Y078' OR 'Y079' OR 'Y156' OR OR 'Y148'
OR 'Y102' OR 'Y205' OR 'Y206' OR 'Y207' OR 'Y208' OR
'Y209' OR 'Y213' OR 'Y210' OR 'Y211' OR 'Y212' OR 'Z%DS'
OR 'Z%DO' OR 'Y113' OR 'Y151' OR 'Y152' OR 'Y153' OR
'Y154' OR 'Y155' OR 'Y147' OR'Z%PB' OR 'Y142' OR 'Y131'
OR 'Y141' OR 'Y149' OR 'ZDEO' OR 'Z%DR' OR 'Y115' OR
'Y116' OR 'Y095' OR 'Y084' OR 'ZSA$' OR 'ZSA%' OR
'ZPA$' OR 'ZPA%'.
the second set of these condition types have just values that has to be converted into %.
if wac-kbetr = ' ' AND wac-kwert = ' '.
clear w_accitab-zrate.
continue.
else.
p = wac-kbetr.
p = p / 10.
if p < 1.
rate+0(1) = '-'.
endif.
if i = 0.
clear w_accitab-zrate.
else.
i = p.
c = i.
shift c right deleting trailing '-'.
concatenate rate c '%' into rate.
condense rate no-gaps.
MOVE wac-kbetr to w_accitab-zrate.
MOVE rate to w_accitab-zrate.
clear rate.
MOVE wac-kwert to w_accitab-zsubtotal.
endif.
endif.
Thanks alot in advance.
SanthoshMaybe this will help you, otherwise I'm missing something.
[code]
data: begin of wac,
kschl type t685t-kschl,
vtext type t685t-vtext,
end of wac.
case wac-kschl.
when 'ZRAT' or 'ZAGR' or 'ZRCR' or 'Y098' or 'Y007' or 'ZREW' or 'Y106'
or 'ZTSR' or 'Y127' or 'Y125' or 'Y126' or 'Y124' or 'Y157' or 'Y092' or
'Y085' or 'Y090' or 'ZMZD' or 'Y215' or 'Y214' or 'Y111' or 'ZC$D' or
'ZAUD' or 'ZTHX' or 'ZCOL' or 'ZCFE' or 'ZSPA' or 'ZBOX' or 'ZCOR'
or 'Y130' or 'ZBOR' or 'Y108' or 'ZFPP' or 'Y204' or 'Y200' or 'Y202' or
'Y201' or 'Y203' or 'Y002' or 'ZSCR' or 'Y128' or 'Y100' or 'ZABS' or
'ZSMG' or 'ZFRE' or 'ZREC' or 'ZCOM' or 'ZPMG' or 'BEMG' or 'ZDTI'
or'ZBET'.
Some code
when 'ZSED' or 'ZRFQ' or 'ZIMP' or 'ZERR'
or 'ZECD' or 'ZAC1' or 'ZAC%' or 'ZAC2' or 'ZSED' or 'ZRFQ' or 'ZIMP' or
'ZERR' or 'ZECD' or 'ZQUD' or 'ZEMP' or 'Y101' or 'Y012' or 'ZCHU' or
'Y054' or 'Y065' or 'Y066' or 'Y067' or 'Y068' or 'Y069' or 'Y096'
or 'Y103' or 'Y010' or 'Y070' or 'Y071' or
'Y072' or 'Y073' or 'Y074' or 'Y075' or 'Y076'
or 'Y077' or 'Y078' or 'Y079' or 'Y156' or 'Y148'
or 'Y102' or 'Y205' or 'Y206' or 'Y207' or 'Y208' or
'Y209' or 'Y213' or 'Y210' or 'Y211' or 'Y212' or 'Z%DS'
or 'Z%DO' or 'Y113' or 'Y151' or 'Y152' or 'Y153' or
'Y154' or 'Y155' or 'Y147' or'Z%PB' or 'Y142' or 'Y131'
or 'Y141' or 'Y149' or 'ZDEO' or 'Z%DR' or 'Y115' or
'Y116' or 'Y095' or 'Y084' or 'ZSA$' or 'ZSA%' or
'ZPA$' or 'ZPA%'.
Some code
endcase.
select single vtext into wac-vtext from t685t
where spras = sy-langu
and kschl = wac-kschl.
write:/ wac-kschl, wac-vtext.
[/code]
Regards,
Rich Heilman -
How to use standard Search Input Help (return 2 data code and desc) ?
Hi,
Please advise how to use standard Input Help provided by SAP and return 2 data (code and description) ? because the standard Input Help only return the code only ?
Thank You and Best Regards
Fernand>
Saket Abhyankar wrote:
> Hi,
>
> I think you need to go for 'Search Help Exit' or OVS.
>
> Regards,
>
> Saket.
That is not true that this is the only way. The standard Data Dictory based search help can return more than one value as long as there are multiple exporting values defined in the search help, the search help is attached to a Data Dictionary Structure, and this same data dictionary structure is used as the source of the context node. You can read more about this in the online help:
http://help.sap.com/saphelp_nw70ehp1/helpdata/en/47/9f724642314aabe10000000a42189b/frameset.htm
The Note section under Integration:
If an input help structure is stored in a field in the ABAP Dictionary, and if you want to use the field mapping of search help parameters stored in the ABAP Dictionary as the field name for the structure for your Web Dynpro input help, then map your context nodes to this structure. This ensures that all components of the structure are available dynamically at runtime as attributes of the node.
If the context node is not mapped to the structure, the data element's input help can be used if there is one. -
Need help with a activation code for Adobe Acrobat X Standard for my PC, Don't have older Version of Adobe Acrobat 9, 8 or 7.
You don't need to install the older version, you only need the serial number from your original purchase. If you don't have them to hand, did you register? If so, they should be in your Adobe account. If not you really need to contact Adobe, though it isn't clear they will be able to do anything without some proof of purchase etc.
-
I need help on some HTML code if at all possible.
What I am trying to do is set up a page that someone can
enter their name address and email into a form and when they hit
the submit button it automatically sends them a premade email of my
choosing that I make prior and somehow maybe embeded into the html
code to the address that they entered? I dont know if it is
possible but I am sure it can be.
Thank you in advanceActually, you could be subject to "abuse complaints", not
"abuse".
Murray --- ICQ 71997575
Adobe Community Expert
(If you *MUST* email me, don't LAUGH when you do so!)
==================
http://www.dreamweavermx-templates.com
- Template Triage!
http://www.projectseven.com/go
- DW FAQs, Tutorials & Resources
http://www.dwfaq.com - DW FAQs,
Tutorials & Resources
http://www.macromedia.com/support/search/
- Macromedia (MM) Technotes
==================
"bregent" <[email protected]> wrote in
message
news:fb547q$b49$[email protected]..
> >What I am trying to do is set up a page that someone
can enter their name
> address
>
> Sure, you can do it fairly easily with any scripting
language. You need to
> be
> cautious about sending automated emails to anyone
without first validating
> that
> they are the actual owners of the email address,
otherwise you open your
> site
> up to abuse.
>
> >I dont know if it is possible but I am sure it can
be.
>
> Huh?
> -
Need help embedding mailchimp subscription code into dreamweaver.
so I created my page in edge animate, and then I brought it over to adobe dreamweaver, and I dont know where or how to place my embeded mailchimp code?
<!-- Begin MailChimp Signup Form -->
<link href="//cdn-images.mailchimp.com/embedcode/slim-081711.css" rel="stylesheet" type="text/css">
<style type="text/css">
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:360px;}
/* Add your own MailChimp form style overrides in your site stylesheet or in this style block.
We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
</style>
<div id="mc_embed_signup">
<form action="http://kandied.us3.list-manage.com/subscribe/post?u=4525b320bd81872705a48ea05&id=4743a970b 1" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
<input type="email" value="" name="EMAIL" class="email" id="mce-EMAIL" placeholder="email address" required>
<!-- real people should not fill this in and expect good things - do not remove this or risk form bot signups-->
<div style="position: absolute; left: -5000px;"><input type="text" name="b_4525b320bd81872705a48ea05_4743a970b1" value=""></div>
<div class="clear"><input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button"></div>
</form>
</div>
<!--End mc_embed_signup-->
I keep trying to add it to it, but I either get noting or just the subscription box. does this happen due to my edge animate project?Ben Thank you so much for your reply! It helped me read the code and made me understand it better. I decided to make my own subscription box by making a symbol "Subscription" and inside this i created two more symbols called "Textbox" and "Submittbutton". I tried putting in part of the code from above under the div id, but it kept creating the whole text box behind the symbols in dreamweaver. How would you suggest I embed the code from above into my created submission box below?
<div id="Stage_Center2_Subscription">
<div id="Stage_Center2_Subscription_subscribe"></div>
<div id="Stage_Center2_Subscription_Submittbutton">
<div id="Stage_Center2_Subscription_Submittbutton_Submitbutton">
<div id="Stage_Center2_Subscription_Submittbutton_Submitbutton_RoundRect2"></div>
</div>
<div id="Stage_Center2_Subscription_Submittbutton_text">
<div id="Stage_Center2_Subscription_Submittbutton_text_Text">Join</div>
</div>
</div>
<div id="Stage_Center2_Subscription_Textbox">
<div id="Stage_Center2_Subscription_Textbox_textbox">
<div id="Stage_Center2_Subscription_Textbox_textbox_RoundRect"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
Thank you for taking the time to look at my question! I really appreciate it!
Kyle -
I need help getting new authorization codes for digital copies
I need help getting new authorization codes for digital copies of movies. Can someone help me out?
There's a lot of results in Google when you search for this but unfortunately refreshing the page doesn't seem to generate a different code anymore. Mine also says already redeemed
-
Hi All,
My design wont allow Delta loads because the transformation source is an InfoSet. To limit the data in these loads, I require a filter in the DTPs on fiscal year/period then only load I can load the current month and 2 prior months. Now we are updating manually for the DTPs. To eliminate this monthly task a dynamic filter (routine) needs should be used rather than a static filter.
So I have written as follows But in the debugger mode am able to see the -3months to the current date but records are not filtered. Any help please
*& Include RSBC_SEL_ROUTINE_TPL -
program conversion_routine.---
Type pools used by conversion program---
type-pools: rsarc, rsarr, rssm.---
tables: rssdlrange.---
Global code used by conversion rules---
$$ begin of global - insert your declaration only below this line ----
TABLES: ...---
DATA: ...------
$$ end of global - insert your declaration only before this line ----
Fieldname = F139---
data type = NUMC---
length = 000007---
form compute_F139---
tables l_t_range structure rssdlrange---
changing p_subrc like sy-subrc.---
Insert source code to current selection field---
$$ begin of routine - insert your code only below this line ----
data: l_idx like sy-tabix.---
read table l_t_range with key---
fieldname = '/bic/0FISCPER' .---
l_idx = sy-tabix.---
DATA: w_date TYPE SY-DATUM,---
w_date1 type sy-datum,---
lv_idate(8) type n,---
lv_odate(8) type n,---
lv_date1(7) type n,---
lv_date2(8) type n.---
CONCATENATE SY-DATUM0(4) SY-DATUM4(2) sy-datum+6(2) into W_DATE.---
CALL FUNCTION 'SEPA_MANDATE_ADD_MONTH_TO_DATE'---
EXPORTING---
MONTHS = '-3'---
OLDDATE = W_DATE---
IMPORTING---
NEWDATE = W_DATE1.---
Concatenate W_DATE0(4) W_DATE4(2) W_DATE+6(2) into lv_Idate.---
Concatenate W_DATE10(4) W_DATE14(2) W_DATE1+6(2) into lv_odate.---
Concatenate '0' W_DATE4(2) '.' W_DATE0(4) into lv_date2.---
Concatenate '0' W_DATE14(2) W_DATE10(4) into lv_date1.---
CALL FUNCTION 'UMC_CALDAY_TO_FISCPER'---
EXPORTING---
I_PERIV = 'K1'---
I_CALDAY = lv_Idate---
IMPORTING---
OUTPUT = lv_date1.---
CALL FUNCTION 'UMC_CALDAY_TO_FISCPER'---
EXPORTING---
I_PERIV = 'K1'---
I_CALDAY = lv_odate---
IMPORTING---
OUTPUT = lv_date2.---
*l_t_range-iobjnm = '0FISCPER'.---
l_t_range-fieldname = '/bic/0FISCPER'.---
l_t_range-sign = 'I'.---
l_t_range-option = 'GE'.---
l_t_range-low = lv_date1.---
*l_t_range-high = lv_date2.---
if l_idx <> 0.---
modify l_t_range index l_idx.---
else.---
append l_t_range.---
endif.---
p_subrc = 0.---
$$ end of routine - insert your code only before this line ----
endform.---
-Ashwin
Edited by: ashwin kumar on Jun 16, 2010 10:04 AM1. In the future, please use a meaningful subject line, like "loop not performing last iteration." Just saying "Help in my java code" is useless. We know you need help with your Java code, else you wouldn't be posting here.
2. Repost your code without those annoying superfluous asterisks, and with proper indentation in the section that they are currently polluting. It's too hard to read as-is. -
Help in translating JAVA code into CF
Hi all! I'm at the end of integrating an in-house calendar with Google calendars and all is working, however, I am stumped as to how implement callback functions. Here's what I'm trying to do as outlined on http://code.google.com/p/google-api-java-client/source/browse/Batch.wiki?repo=wiki
What I need to do is this section right here:
JsonBatchCallback<Calendar> callback = new JsonBatchCallback<Calendar>() {
public void onSuccess(Calendar calendar, HttpHeaders responseHeaders) {
printCalendar(calendar);
addedCalendarsUsingBatch.add(calendar);
public void onFailure(GoogleJsonError e, HttpHeaders responseHeaders) {
System.out.println("Error Message: " + e.getMessage());
And then later pass it to:
client.calendars().insert(entry1).queue(batch, callback);
I believe I can pass one function by passing just the name of the function, but BatchCallback has two functions. Is this impossible to do in CF?
Thanks,
Ross.1. In the future, please use a meaningful subject line, like "loop not performing last iteration." Just saying "Help in my java code" is useless. We know you need help with your Java code, else you wouldn't be posting here.
2. Repost your code without those annoying superfluous asterisks, and with proper indentation in the section that they are currently polluting. It's too hard to read as-is. -
Looking help for developing labview code [Urgent]
Hi,
I need help in developing labview code. I am new to labview and will appreciate if someone can help me in this matter. I need to control the intensity of AC load (halogen lamp with 2kW,230V,50Hz) using Labview and Arduino. But my project using interrupt in Arduino, so it is not possible to use Labview Interface For Arduino(LIFA). I searched and it might be possible to use VISA serial in this matter. Attached is the circuit and the code of Arduino. Someone who is expert in this matter can help me?
The concept of my project is almost same with https://www.youtube.com/watch?v=oeVJ5bs6E8M&feature=youtu.be
Solved!
Go to Solution.
Attachments:
Zero Cross Circuit.docx 203 KB
Triggering Circuit.docx 48 KB
Coding for Arduino.txt 7 KBHi,
You will find all information you need and LabVIEW VI examples on the LabVIEW Interface for Arduino
LabVIEW Interface for Arduino
Regards,
Valentin
Certified TestStand Architect
Certified LabVIEW Developer
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
Travaux Pratiques d'initiation à LabVIEW et à la mesure
Du 2 au 23 octobre, partout en France -
Hi Gurus,
Please help me with the code.
Algorithm: This is for master data extraction. I need to append some records to I_T_DATA before the loop on I_T_DATA begins.
ZTAB is a custom defined table with key KEY. STAB is standard table with key KEY.
1. Create an internal table I_T_STAB similar to STAB.
2. Loop at I_T_DATA
Read record from ZTAB where KEY = I_T_DATA-KEY and { field1 <> I_T_DATA-field1 or field2 <> I_T_DATA-field2 <> field3 <> I_T_DATA-field3}
If success
Delete record from I_T_DATA.
Else
Continue loop.
Copy all records of STAB to I_T_STAB.
3. Delete records in I_T_STAB where I_T_STAB-KEY = ZTAB-KEY.
Now
4. Delete all records in I_T_DATA where I_T_DATA-KEY = I_T_STAB-KEY.
Now,
5. Append all the remaining records from step 3 in I_T_STAB to I_T_DATA.
Please help me with the code upto this part.
Now the actual code in exit starts.
Loop at I_T_DATA
Thanks,
Regards,
aarthi
[email protected]You might get a quick answer if you were to post in the ABAP forum.
Moderator, please move to ABAP forum. Thanks.
Regards,
Rich Heilman -
Help with basic ABAP code (merge internal tables, sort of...)
Hello,
Can someone please help write some basic code for a Basis guy with limited ABAP knowledge?
Should be some easy points for an experienced ABAPer!
I have identicaly structured internal tables I_A and I_B and I_C which have already been filled by function models I called.
How will I code the following?:
I want to read all the data of I_A into a new internal table I_MASTER (structured the same as I_A,I_B and I_C).
Then I want to read I_B and:
1)Update I_MASTER with NEW records
2)Update existing records if the value of field MYFIELD in I_B is smaller than the value of MYFIELD in I_MASTER.
Then I want to read I_C and:
1)Update I_MASTER with NEW records
2)Update existing records if the value of field MYFIELD in I_C is smaller than the value of MYFIELD in I_MASTER.
Let me know if I can provide anymore information.
Thanks in advance for you help!
Adriaan
Message was edited by: Adriaan
Message was edited by: AdriaanHi Adriaan ,
I want to read all the data of I_A into a new internal table I_MASTER (structured the same as I_A,I_B and I_C).
<b>i_master[] = i_a[] .</b>
loop at i_b .
read table i_master with key myfiled < i_b-myfield .
if sy-subrc = 0 .
append i_master from i_b .
endif.
endloop.
loop at i_c .
read table i_master with key myfiled < i_c-myfield .
if sy-subrc = 0 .
append i_master from i_c .
endif.
endloop.
Let me know if this helped .
Regards,
Varun .
Message was edited by: varun sonu -
Picking problem.Can anyone help me debug my code?
Can someone help me debug my code?
I try to pick a ColorCube,
but when I pick a ColorCube in my scene,
I get the following error message:
Exception occurred during Behavior execution:
javax.media.j3d.CapabilityNotSetException: GeometryArray: no capability to get v
ertex count
at javax.media.j3d.GeometryArray.getVertexCount(GeometryArray.java:581)
at com.sun.j3d.utils.picking.PickResult.intersect(PickResult.java:654)
at com.sun.j3d.utils.picking.PickResult.generateIntersections(PickResult
.java:635)
at com.sun.j3d.utils.picking.PickResult.numIntersections(PickResult.java
:422)
at com.sun.j3d.utils.picking.PickTool.pickGeomAllSortedIntersect(PickToo
l.java:854)
at com.sun.j3d.utils.picking.PickTool.pickGeomClosestIntersect(PickTool.
java:915)
at com.sun.j3d.utils.picking.PickTool.pickClosest(PickTool.java:566)
at SimpleBehaviorApp$SimpleBehavior.processStimulus(SimpleBehaviorApp.ja
va:119)
at javax.media.j3d.BehaviorScheduler.doWork(BehaviorScheduler.java:172)
at javax.media.j3d.J3dThread.run(J3dThread.java:250)
when i try to run the following code:
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.picking.*;
import com.sun.j3d.utils.universe.SimpleUniverse;
import javax.media.j3d.*;
import javax.vecmath.*;
import javax.swing.JOptionPane;
import java.awt.event.*;
import java.util.Enumeration;
// SimpleBehaviorApp renders a single ColorCube
// that rotates when any key is pressed.
public class SimpleBehaviorApp extends Applet
BranchGroup objRoot;
Canvas3D canvas3D;
public SimpleBehaviorApp()
setLayout(new BorderLayout());
GraphicsConfiguration config =
SimpleUniverse.getPreferredConfiguration();
canvas3D = new Canvas3D(config);
add("Center", canvas3D);
BranchGroup scene = createSceneGraph();
// SimpleUniverse is a Convenience Utility class
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform();
simpleU.addBranchGraph(scene);
} // end of SimpleBehaviorApp (constructor)
public BranchGroup createSceneGraph()
// Create the root of the branch graph
objRoot = new BranchGroup();
objRoot.setCapability(BranchGroup.ALLOW_PICKABLE_READ);
objRoot.setCapability(BranchGroup.ALLOW_PICKABLE_WRITE);
objRoot.setCapability(BranchGroup.ENABLE_PICK_REPORTING);
objRoot.setCapability(BranchGroup.ALLOW_AUTO_COMPUTE_BOUNDS_READ);
objRoot.setCapability(BranchGroup.ALLOW_AUTO_COMPUTE_BOUNDS_WRITE);
ColorCube ca=new ColorCube(0.4);
ca.setCapability(ColorCube.ALLOW_PICKABLE_READ);
ca.setCapability(ColorCube.ALLOW_PICKABLE_WRITE);
ca.setCapability(ColorCube.ALLOW_GEOMETRY_READ);
ca.setCapability(ColorCube.ALLOW_GEOMETRY_WRITE);
ca.setCapability(ColorCube.ENABLE_PICK_REPORTING);
ca.setCapability(ColorCube.ALLOW_BOUNDS_READ);
ca.setCapability(ColorCube.ALLOW_AUTO_COMPUTE_BOUNDS_READ);
ca.setPickable(true);
objRoot.addChild(ca);
SimpleBehavior myRotationBehavior = new SimpleBehavior(objRoot,canvas3D);
myRotationBehavior.setSchedulingBounds(new BoundingSphere());
objRoot.addChild(myRotationBehavior);
// Let Java 3D perform optimizations on this scene graph.
objRoot.compile();
return objRoot;
} // end of CreateSceneGraph method of SimpleBehaviorApp
//�������OSimpleBehavior�����@���������������u��
public class SimpleBehavior extends Behavior
private TransformGroup targetTG;
private Transform3D rotation = new Transform3D();
private WakeupCondition wCond;
private PickCanvas pickCanvas;
// create SimpleBehavior
public SimpleBehavior(BranchGroup targetBG,Canvas3D canvas3D)
wCond=new WakeupOnAWTEvent(MouseEvent.MOUSE_PRESSED);
pickCanvas=new PickCanvas(canvas3D,targetBG);
pickCanvas.setTolerance(5.0f);
pickCanvas.setMode(PickCanvas.GEOMETRY_INTERSECT_INFO);
public void initialize()
// set initial wakeup condition
this.setSchedulingBounds(new BoundingSphere(new Point3d(),300));
this.wakeupOn(wCond);
public void processStimulus(Enumeration criteria)
PickResult pickResult;
MouseEvent event=(MouseEvent)((WakeupOnAWTEvent) criteria.nextElement()).getAWTEvent()[0];
pickCanvas.setShapeLocation(event);
Point3d eyePos=pickCanvas.getStartPosition();
if(pickCanvas.pickClosest()!=null)
pickResult=pickCanvas.pickClosest();
Node node=pickResult.getObject();
PickTool.setCapabilities(node,PickTool.INTERSECT_FULL);
else
JOptionPane.showMessageDialog(null,"pickCanvas.pickClosest()������");
this.wakeupOn(wCond);
} // end of class SimpleBehavior
public static void main(String[] args)
Frame frame = new MainFrame(new SimpleBehaviorApp(), 256, 256);
} // end of main (method of SimpleBehaviorApp)
} // end of class SimpleBehaviorAppHi Tinyuh,
ColorCube?? I learnt thru mistakes. YEPThe following code creates a pickable colorcube.. it works for me!
public BranchGroup addObject(Vector3d vector)
BranchGroup branch = new BranchGroup();
branch.setCapability(BranchGroup.ENABLE_PICK_REPORTING);
branch.setCapability(BranchGroup.ALLOW_DETACH);
TransformGroup trans = new TransformGroup();
trans.setBounds(new BoundingSphere());
Transform3D t3d = new Transform3D();
t3d.setTranslation(vector);
trans.setTransform(t3d);
branch.addChild(trans);
ColorCube cube = new ColorCube(0.5d);
cube.setCollidable(true);
cube.setCapability(Shape3D.ALLOW_GEOMETRY_READ);
cube.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
cube.setCapability(Shape3D.ALLOW_COLLIDABLE_READ);
cube.setPickable(true);
trans.addChild(cube);
return branch;
Maybe you are looking for
-
How can I keep my video sound from cutting out?
The last couple of weeks the sound on my videos has been cutting out after I play them on Itunes on my computer, usually after a few seconds to a minute or two. I do not have the same problem when I load them on my really old Ipod Touch however. How
-
Add Row in detail table when check box is checked on a master report table
Hi, How could I detect the click on the check box within a Report and then insert a row in a detail table? Many thanks for your help jko
-
Integration with with 3rd Party Document management System
Hi We are implementing Invoice Management in SAP, using the Opentext VIM ECC Addon. The Customer has a 3rd Party Document Management System called DocHarbour which is NOT Archivelink enabled. The process flow is that Invoices will be scanned and avai
-
Spotlight will not search...
Here is what happened. Finder hard crashed so badly that it required that I shut off the computer.(Mac Pro) I could not even bring up force quit. When it came back up, Spotlight just would not search. It would come up, but typing in a term would do n
-
Alleged Copyright Infringement using IPhoto 09 music on FB
Hi Can someone clear this up I have just received an email from Facebook telling me that the music or content is breaking the law as the pictures are mine that I created in Iphoto it can't be that. That only leaves the music that comes with Iphoto. C