Swing/AWT/SWT :: How To Capture MouseClick Event From JTable Within A JScrollPane
Apr 15, 2009
I have a JTable that is within a JScrollPane. If I try to write add a MouseListener to the JTable it never fires. However, a mouse event does fire for the JScrollPane which it is added to. Is there a way to prevent the JScrollPane from capturing the event or passing it along to the JTable?
Returning true from getScrollableTracksViewportWidth() makes the table (or other Scrollable) size its width to match the viewport. I need the opposite: for the viewport to expand its width to accommodate the table (of course, limited by the constraints imposed by the scroll pane's container's layout manager) without reducing column widths i.e. setAutoResizeMode(AUTO_RESIZE_OFF).
I have achieved this by overriding
getPreferredScrollableViewportSize(): JTable table = new JTable() { @Override public Dimension getPreferredScrollableViewportSize() { return new Dimension(super.getPreferredSize().width, super.getPreferredScrollableViewportSize().height); } };
Now when the scroll pane is added at BorderLayout.CENTER and the frame is pack()ed, all columns of the table are displayed, without need for a horizontal scrollbar.
In my code where the Button Action Performed is created, I have done the following to ensure that the visibility of the JTable and JScrollPane have been set to true. But it does not work?
Need to develop a Java application to listen to all user events occurring in the (initially only Windows) operating system to record some kind of record and to reproduce the sequence of events below ...
I have a combobox with this PopupMenuListener. All works fine, except that the popupMenuWillBecomeInvisible method does not capture the selection made and neither does it show the selection.
PopupMenuListener pmlMqMessagePurged = new PopupMenuListener() { @SuppressWarnings("unchecked") public void popupMenuWillBecomeVisible(PopupMenuEvent arg0) { try { JdbcSqlServerDataSource ds = new JdbcSqlServerDataSource( DbConnectionURL.UToolDbHostName, 0,
[Code] .....
The popupMenuWillBecomeInvisible does fire but the System.out.println() returns 'nul'l as answer to the value i have selected from the combobox.
I have a JFrame with a button called "Start". The code behind the "Start" button triggers a function (startwork() ) that traverses through log files and then inserts rows into my JTable. If I call the startwork() function from the Start button action performed event, then when it inserts the rows to the JTable it is not immediately shown...
The code has to finish before the JTable is refreshed. However, if I run the startwork() function as soon as the JFrame is displayed (from the main() function) then I can see the Jtable being populated dynamically as it is inserting the rows.
How to allow the user to click on the START button and yet behave correctly to where the JTable is updated properly so that I can see the rows being inserted as it progresses.
I am trying to create a JScrollPane with buttons in it, but I noticed that when I try to scroll, the items all move into ONE row at the top of the JScrollPane. How do I have them vertical? Is there something wrong with the way I am setting up the JScrollPane?
I have a JScrollPane with a JTextArea. The JTextArea is loaded with 10 lines of data. I have two JCheckBox's. The first check box sets the scroll to 10. sp.getVerticalScrollBar().setValue(10); The second check box reloads (ta.setText(text)) the text and then sets the scroll to 10. Why does the second one not work? I have attached a simple program. It is probably easier for you to compile and run than for me to go into detail explaining further.
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Tester extends JFrame { private static final String text = "1
When I add to a JScrollPane (I'm adding to a JPanel then putting that in the scroll pane) it displays as many items in one row as possible. How can I make it so that it only displays one per row?
I have Implemented a user control / component that allows zooming in and out of a displayed BufferedImage, for discussion's sake, 3rd party libraries are excluded and everything must be from scratch.I have an image rendered on a JPanel, the JPanel is contained within a scrollbar.
Zooming inout etc works perfectly.The Scrollbars are rendered correctly on Zoom In and disappear when I zoom out.I want to add the functionality of focusing on a specific quarter of the displayed image via four dedicated buttons, each send an int (1-4) to a method, that controls the scrollbars.
And resizes the image whilst scrolling the scrollbars accordingly,The method works as expected, and the scrollbars go to the desired location, But there's a catch:The first click on any of the above buttons does not work, but from the second click and on, everything works great!
I'm writing a Java Swing program for my software development class to allow a user to create a map for a side scroller video game. I'm stuck on a particular part of my GUI where I'm trying to create a properties box for specific tiles. When I draw the components onto the JPanel and display it as it is, it shows two check boxes per row. On the ScrollPane however, all the check boxes go straight onto one line and draw out the scroll pane. Right now I am only concerned with just making the basic GUI.
Here is what I have so far:
Within the main class, I am creating the JFrame and adding components to it. I am attempting to create a JScrollPane which will hold the properties check boxes...
Here is the method where I am implementing the code. It works, but it doesn't display correctly.
private void createPropertiesBox() { PropertiesBoxPanel pbp = new PropertiesBoxPanel(); propertiesBox = new JScrollPane(pbp); propertiesBox.setViewportView(pbp); frame.add(propertiesBox);
[Code] .....
I've been tinkering with this code for quite some time now and I cannot seem to make a breakthrough on how to fix this.
I've built up an unreasonably large and unreasonably complicated JPanel. Unfortunately, when I use setViewportView to add it to a JScrollPane, a get an extended UI freeze—that operation takes several seconds. I'm trying to figure out what's taking so long. I've tried some fairly extreme things, like overriding the paintComponent, PaintComponents, paintChildren, paint, repaint, validate, revalidate, and validateTree methods in the panel with no-ops to try to figure out what's taking so long, but to no avail. I've tried validating the JPanel before adding it, but that has no effect. If I override the addImpl method of the scroll pane, that makes things quick, but it doesn't really narrow things down much.
So for a test i have a small array set as a jlist which is the contents of my jscrollpane, and it appears as if nothing is there until i adjust the window size by dragging it out or in... whats going on?
Here I want to make a simple program where a Ball keep bouncing forever, then I add a MouseClick Listener to stop and resume thread (I mean, to stop moving Ball and to resume again). The problem is I can stop the thread using wait(), But I can not resume it. Below is the code
public class TestResumePauseBall { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public synchronized void run() { Field aField = new Field();
[code]....
At first I think that notify() must be called from another active thread. So I add a 'class Timing implements Runnable'. Then I call notifyAll() from class Timing. But still it was failed.
After wait() called on Ball's thread, the whole frame also freeze. I can not understand why this happen?
If this test success, I will add 1 one more ball and add keyboard keys as controller of ball's movement.
I have a swing application that gets football scores from a website using Jsoup.
When the "Get Scores" button is pressed, the scores are printed to a JTextArea with a JScrollPane.
I have also used a SwingWorker to update the scores every couple of seconds.
My problem is that every time the JTextArea updates, the JScrollPane scrolls back to the top of the text area. I wan the scroll bar to stay where the user left it.
Here is my code (The update is currently set to update every 1 second so you can see what the scroll bar is like).
import java.awt.*; import java.awt.event.*; import javax.swing.*; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class frame extends JFrame {
java.awt.Component is an abstract class, and it's direct Sub-classes are Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, Text Component
So, when I use addXListener(mylistenerclass m);//which is a method of Component class which object is holding the list of all listeners, for a particular Event Source?
I am under the assumption that - there is an Event Source Object(possibly static) for every Event Source type(mouse, keyboard etc) that holds a list of destinations(classes that implements their listener interface) - added to the the object via addXListener method. When an event happens(mouse click, drag etc) the Event Source Object creates an Event Object and send it to all the destinations. Is my assumption correct? I can't seem to find the location or declaration of Event Source Object and the list where it stores it's registered destinations.
I think will be easy for me start with a GUI and then make things happens when the user clic on Buttons.Is there a good book about Event driven development on Java?
I'm having difficulty implementing keyboard and mouse event handlers at the same time for a program designed to notify the user when a key has been pressed or a mouse button clicked.
I can make and understand a program that does one or the other, but when I try to combine them, either the keyboard only or the mouse only works.
I have a bunch of textboxes in a panel and I wanted to perform the same code when the user clicks into a textbox (select all the text in it). Right now I've started adding a focusgained listener to each textbox like this:
Is there a way I can have one focusgained listener that all the textfields can point to but have it pick the right textfield in the textFieldx.selectAll();?
I’m teaching myself Java. I am a fairly proficient programmer in other languages, but this is the first OO language I’m doing.I have a question that is a bit hard to summarize. Or it should be: how can I pass on an object (or variable) to an event listener?
I am writing an application in which you can play a Sudoku game. I have separated the “logic” or the “model”(the classes with Sudoku data structures and methods to manipulate them) from the presentation (the view and the controller).The main method starts off as follows:
SudokuModel model = new SudokuModel(); SudokuView viewController = new SudokuViewController(model);
The first line creates class for the logic and the second line creates the class for the view and the controller. Since the view and the controller need access to the business logic, the model is passed on to the ViewController class.The SudokuViewController class creates the user interface in Swing and it handles the user input. For the user input I have created a number of listeners, like this:
table.addKeyListener(this);
Now these listeners need access to the model since they update it. However, as far as I’m aware the only parameter passed on to an event listener is the event itself. So these event listeners do not have direct access to the model, even though it is passed on to the constructor of the class SudokuViewController.
To circumvent this, I made model2 an attribute (variable) of the class SudokuViewController. The constructor of the class sets this variable as follows:
model2 = model;
Now the event listeners have access to model2, which they can manipulate.This works. However, I think it is an ugly solution, introducing an additional object (model2). I’d like to pass on the object named model to the event listener, but this doesn’t seem to be possible.
* A pop-up menu generates an array of rectangle objects; each rectangle having random x.y coords and colour. * The number of rectangles in the array is user selected from the popup list. * The APopUp class has a 'getter' method that returns the array. * The pop-up object is instantiated in an object of the AFrame class. * The AFrame object needs to get the array each time the popup changes its state.
The problem: . * As I see it, the AFrame object needs to informed of the pop-up's state of change event or does the problem lie in how I have decided which responsibilities each class is to have? I've tried to be as logical as possible during planning.
In the days of FORTRAN or BASIC we would hammer a solution through with brute force, but I would like to keep to Java's philosophy of encapsulation and clean interfaces and that it seems to has generated a impasse of brain warping proportions.
import java.awt.Frame; import java.awt.Label; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; public class AFrame extends Frame implements ItemListener {
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 ?