Swing/AWT/SWT :: JButtons Disappearing On Click And Reappearing When Mouseover Occurs
Mar 30, 2015
I'm having issues with JButtons and painting methods, whenever I click a grid on the board, the buttons in the JPanel disappear. Here is the board class:
package GUI;
public class Board extends JPanel implements Observer {
/**
*
*/
// private static final long serialVersionUID = 1L;
private final int boardSizeX;
private final int boardSizeY;
private final int L = 20;
[Code] ....
I know the code is messy in places, this will be fixed later, just need some pointers on how to solve the JButton issue.
I set out to make a Tic-tac-toe (Cross and Noughts) game to test my learning so far. While things have gone pretty well so far, I am absolutely stumped by my current issue. When I compile and run the code, the Grid of buttons that I generate do not appear. However, if I mouse over the window, they seem to then get refreshed/repainted. I cannot for the life of me figure out why this is happening. From Googling the issue, it seems this is either an issue with the layout manager or related to a thread conflict with the GUI? [URL] ....
I'm listing out the code for the game class and the button class.
import java.awt.event.*; import javax.swing.*; import java.awt.*; import java.util.*; public class CrossNoughtsGame { private JFrame frame; private JPanel mainPanel; private ArrayList<CNButton> buttonList = new ArrayList<CNButton>(); private boolean isX = true;
I have an application that reads through a ResultSet... while I'm reading that ResultSet, I am creating new JButtons..... Now I need to add an ActionListener to those JButtons...... but they are not visible to the actionPerformed method. So I thought I'd try to add an ActionListener as I created the buttons with the following code:
final File file = new File(rs.getString(3)); SKPictureButton spb = new SKPictureButton(url,file.getName()); spb.addActionListener ( new ActionListener() { public void actionPerformed( ActionEvent e )
[Code] ....
However this seems a bit excessive to me..... I don't think I really want to be creating a new ActionListener class for each JButton do I ? Is there a better way to make the JButtons created in this method visible to the actionPerformed method ? I'm just gettin' back into the "Swing" of things in Java.... haven't coded it for a while.
I am in the middle of creating a chess application, and am currently working on laying out a list of moves on the right of the actual board. Specifically, I want to have a JLabel that says "moves" on top of a JList that contains the moves, on top of two buttons, labeled "<" and ">" respectively, to which I will eventually add functionality to take back and un-take back moves. Currently I have the first two parts down, but when I add my buttons,the other components are getting messed up.
I have all of these things in a vertical BoxLayout inside of a JPanel with a fixed width of 70, and a height that varies according to the size of the window (I overrode the getPreferredSize method of the JPanel). The two buttons are within their own JPanel with a grid layout with one row and two columns. Then I basically just add the moves list label, the movesList, and the panel housing the buttons to the larger panel, in that order.
However, I am encountering two problems. One, the buttons display the text "... " instead of "<" and ">" as if there is not enough room, although I'm pretty sure three periods take up more space than one less than or more than sign. The next is that, without the buttons at the bottom, the label reading "moves" is appropriately centered (or left aligned, I can't tell which) over the movesList, and you can read its whole text. However, when I add in the buttons at the bottom, the label of the top shifts over to the right and then reads "mov..." because it has run out of room.
Here is my code:
//move list movesListLabel = new JLabel("Moves"); //the components for the actual movesList come from another class with an object called pen, but I don't think this is the problem listModel = pen.getListModel(); JList movesList = pen.getMovesList(); JScrollPane listScroller = pen.getMovesListScrollPane();
Am trying to dynamically insert buttons (which will be presenting card in a frame) using grid layout.As shown image is getting inserted but its not fit in button.I tried Darryl's Stretch icon as well but of no support.
I'm trying to do is get this ball to bounce around the screen and ive gotten so far but not sure how to proceed. The ball keeps disappearing.
//bouncing ball
float x; //ball x position float dx = 3; //ball x direction is right, step 5 float y; //ball y position float dy = 3; void setup () //runs once at start
How can i add a background image for this code without disappearing the button and label? I want a frame that has a background and still shows the buttons and label that I place. and how can I insert Buffered Reader in this code, this is a file organizer, but it only shows first line of a text file. I want to show the whole text file. And is it possible to also show path of the file?
I am relatively new to java. . I cannot...(actually do not know) how to change the actionlistener (actionPerformed) after the second click in an array of JButtons. This is how the program performs right now.
On the 1st click on the grid, the border of the button clicked will change to 'blue' and another button will change its boarder to 'red'. on the next click the same action is performed.
What I need is to change action when the 'red' bordered button is clicked, lets say change the color of the buttons from the 'red' to the 'blue' buttons.(x 3 buttons).
The logic about how to perform the final result I think I can do on my own but my problem is how to change the action when the red bordered button is clicked.
I have buttons created on a frame and then I register the listener from a controller in a controller-view relationship.
When I click the button on the face, the action never executes for some reason. I thought maybe there was a problem registering the listener but I can call the buttons doclick() method and it executes as it should. Perhaps I'm overlooking something really obvious here but I can't see it.
again, when i click the button nothing happens. but if i add the following code
btnEight.doclick()
the actionPerformed invokes in theController as I intended.
You can see the entire project on GitHub so you can see the full context. The controller class contains the listener and the view class contains the buttons.
I've recently decided to learn Java on my own using internet material such as forums, blogs and you tube. Ive never programed before but through some research I concluded that Java is going to be on the mid spectrum of difficulty as far as verbiage goes. I ma in no way implying that Java is easy but instead closer to spoken English that c++ if my research is correct. So here is my attempt at a basic program where I click a button and it will make an image appear. Not sure where Im falling short
package clicktoimage; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Clicktoimage extends JFrame { private JLabel label; private ImageIcon image;
I am trying to plot a graph and graph should display when JButton is clicked. To create data set, I am taking some value through JTextField and then created a chart and plotted it. I've got a problems: the chart doesn't refresh/update when I change the text field value.
public class Test2 extends JFrame { /** * */ private static final long serialVersionUID = 1L; private JPanel contentPane; private ChartPanel chartPanel; private JTextField textField_1; double a;
Projectsrccom.mypackageMyClass.java resourcesicon.pngmyexe.exe Right now I have to run the exe like this : - It has hardcoded the path of the exe :command = "cmd /c start /b cmd.exe /K "cd " + outputFolderPath + " && C:myfoldermyexe.exe " + "param1=value1 param2=value2 " ;
Process p = Runtime.getRuntime().exec(command); This works fine. But, When I package it as a jar I want to give a relative path to my resources folder. How can I make this happen?
I tried:File f = new File("resources/myexe.exe"); String path = f.getAbsolutePath(); but this "path" did not work.
Another way would be to extract the exe to a local path on the server, but there is a possibility that I could face permission issues.
I read the oracle doc example, i understand the concept but still nothing is happening on show,first ,next method of CardLayout in ActionPerformed. Code is highlighted where I am facing problem.
I want to switch panel on click of a button and code for switching panels is written in update method (Which gets called from notify observer of another class as part of Observer pattern.
playGame in Panel 1 of class 1 calls another class (class 2)and data comes in update method of class 1(Observer interface).
Now for switching panels code is in gameControllerDataProcessing . I am not able to switch the panels when this functionality runs.
However if i dont call the unoGameController.playGame(playerFirst.getText(), playerSecond.getText() and directly call the update method or directly write the switching panel code . then it works fine.
I know how to do single selection, but I would like to do multiple row selection only by using CTRL + click without the option of dragging the mouse to select rows. So the user would have to hit ctrl + click each time to highlight additional rows.
I've got the game working just fine, but I don't like the way it starts playing the second you hit the "Run Last Class" button in Eclipse, and would really like to have the game start, then wait for the user to click a button before running the core WHILE loop. Everything is implemented in a single class, and here is the playGame method that starts the ball moving:
private void playGame(){ while (!gameover){ moveBall(); checkForCollisions(); }
All I want to do is pause before the WHILE loop until the users clicks the mouse button, nothing fancier than that! I've done quite a bit of reading, and it looks like ActionEvent may be the way to go, but I'm not clear on how to use it correctly in this scenario.
I would like to get a checkbox within a table to fire an event when it's clicked rather. I gave tried putting in a TableModelListener but the the event only seems to trigger when I click on another column (as if the table is waiting to see if I will change my mind) before moving on.
I have also looked at the setValue of the TableModel itself.
Do I need to put an ActionListener on each checkbox or have I missed something ?
In the method mouseClicked(MouseEvent me) the co-ords of the click are obtained.
* if they are within the confines of the rectangle rect, console output System.out.println("inside box") is displayed * in either case the click co-ords are displayed in the console
I'm getting the co-ords of the mouse clicks but no message when the click is inside the box
import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; /* Experiment 04 was successful. So now (Experiment 05) I must try and see if I can identify mouse clicks that occur within the rectangle. */
public class AFrame extends Frame implements MouseListener { ARectangle rect; public AFrame(ARectangle rect) {
I have the following listener on a tableset of names:
ListSelectionListener singleListener=new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { int row=e.getFirstIndex(); if (row==previousRow) { row=-1;
[Code] .....
The println shows that getValueIsAdjusting is called 4 times when I click a single selection from the list. Is this normal behavior? If so how do I determine which call to really use. If not, where can I look to see why it is being called 4 times on a single click?
In JButton's click event, I wanto to show a JPanel to print the message "Processing" on the screen. Before JButton's click logic end, hide the JPanel.
Actually, JPanel is not displayed. I do not know why.When msgPanel .setVisible(false); is commented out, JPanel is normally displayed .But do not know how to hide it when JButton's click logic is finished.
Here is the code.
loadBtn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { JPanel msgPanel = new JPanel(rootFrame); // Show the message JPanel