How do I get all three of my panels to be visible at once?

I'm trying to create a game and I'm currently designing my GUI. I have 3 panels, mapPanel (which will eventually have my loaded map in), controlPanel (for the game controls: play, pause and stop) and I'm now trying to add another panel which will display the info on the players. My issue is that the program only shows whichever panel is added last, what am I doing wrong/missing? Thanks in advance!
//package vrc20.programming.coursework.java.DiamondMine;
import javax.swing.*;
import java.awt.*;
import java.awt.Color.*;
import java.awt.event.*;
public class DiamondMineGUI extends JFrame {
        DiamondMineGUI(int numberOfPlayers, String mapFilename) {
                super("Diamond Mine: The game that plays itself..");
                setSize(800,600);
                setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                setLayout(new BorderLayout(10, 10));
                // PANEL 1
                //create a panel for the maps to be shown in
                JPanel mapPanel = new JPanel();
                add(mapPanel, BorderLayout.WEST);
                // PANEL 2
                //create a panel for the game control buttons to go in and set the layout
                JPanel controlPanel = new JPanel(new GridLayout(1, 3, 2, 2));
                // create buttons for playing, pausing and stopping the game
                JButton playButton = new JButton("PLAY");
                JButton pauseButton = new JButton("PAUSE / CONTINUE");
                JButton stopButton = new JButton("STOP");
                // associate them with appropriate listeners
                ActionListener playListener = new PlayListener();
                ActionListener pauseListener = new PauseListener();
                ActionListener stopListener = new StopListener();
                playButton.addActionListener(playListener);
                pauseButton.addActionListener(pauseListener);
                stopButton.addActionListener(stopListener);
                //add them to the panel, then add the panel to the frame
                controlPanel.add(playButton);
                controlPanel.add(pauseButton);
                controlPanel.add(stopButton);
                add(controlPanel);
                // PANEL 3
                // create the panel which shows the players and their statistics
                JPanel playersPanel = new JPanel(new GridLayout(1, 1, 1, 1));
                for (int i = 1; i <= numberOfPlayers; i++) {
                        playersPanel.add(new JLabel("Player " + i + ":"));
                //add(playersPanel);
                //set the frame to be visible
                setVisible(true);
        public static void main(String[] args) {
                System.out.println("Loading..");
                DiamondMineGUI myDiamondMineGUI = new DiamondMineGUI(5, "MAP");
class PlayListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
                System.out.println("The user pressed play!");
class PauseListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
        System.out.println("The user pressed pause.");
class StopListener implements ActionListener {
        public void actionPerformed(ActionEvent e) {
                System.out.println("STOP!");
}

JustSomeGuy wrote:
"Better" is subjective, and I meant to use it as such.By which, I presume you mean that "better" is context dependent. You're absolutely correct. My interpretation of you're comment, however, was that you felt that BorderLayout was inadequate, and since I don't think there was enough context given to make that judgement, I thought perhaps you were prejudiced againsted BorderLayout for some reason. Obviously, if BorderLayout was not up to the task, then that would be grounds for saying that other layout managers are "better" under the circumstances. But if it is up to the task, than I find it difficult to qualify "better".
>
Obviously in your opinion Borderlayout is the best thing since sliced bread. No, actually. My preferred layout is GridBagLayout. I rarely get to use BorderLayout, except in the simplest of UI's, because I do often find it inadequate for the task at hand. But, in my opinion, the simplest layout manager that will do the job is often the best choice, so even though I can do everything with GridBagLayout (my preferred layout manager) that I can do with BorderLayout, if I find a situation in which BorderLayout is sufficient, then I will always pick BorderLayout, because it's simpler, and more maintainable for my colleagues that find GridBagLayout difficult. I consider BorderLayout superior to GridBagLayout in any case where either one would be sufficient.
But if the OP went with a layout that better suited his/her needs then it would be the "better layout".Absolutely, but that presupposes that BorderLayout did not suite the OP's needs. It would appear that you jumped to the conclusion that BorderLayout was insufficient when there was no indication from the OP that this was the case, and AFAIC, there was every indication that BorderLayout was sufficeint, given that it was the layout selected by the OP, and only three panels were being added.
Did the op figure out how to use border layout or choose a layout that better met his/her needs is exactly what I was inquiring about.That's a fair question, but since "better" requires some context, perhaps a more appropriate term would have been "more flexible", or simply "alternative".
>
But I will argue against your arguement. I agree that borderlayout is most often used, possible due to it being default but more likely because of it's simplicity. If it is something simple you are working on, the borderlayout is absolutely the way to go.
However, I have written many games in java, and borderlayout never works for the main layout of a game. It is fine nested in other layouts, but its simplicity makes it unworkable for the main layout.I disagree. Obviously, you and I have had different experiences developing GUIs, then. I have written a few where BorderLayout worked perfectly. Very often in a game, you would have a control panel at the bottom with a fixed height, as it would ideally be as small as possible while still accomodating the icons & controls it needed to contain, and perhaps another similar control panel on the left hand size, and then a large central space that would fill the remainder of the window, and be the main visualization area of the game. BorderLayout works very well for this sort of thing.
And don't under-estimate the value of nested panels. Sometimes you really do need the complex relationships you can get with more flexible layout managers, but most of the time, if you've got a group of related components that can be thought of as a single group, then you can, and probably should, put them in a nested panel, both for accessibility reasons and for complexity management.
The primary reason for this is people are funny about games, if you write a game that can not be resized ever people will hate it even if the game itself is even better than sliced bread or in your case borderlayout. Some want to play their games in full screen mode, some will settle for a decorative window filling the screen, others want the game to be playable in various sizes and shapes. If shrinking your game window causes things to get cut-off players aren't happy. Similarly if growing your game window just adds a bunch of useless blank space players aren't happy. border layout is just to simple to handle window resizing efficiently, therefore it is not the best layout for games. This is the statement I disagree with the most, of anything you've said. Border layout is perfectly capable of handling resizing of windows. It does so by resizing the components within it, so the real question is how those components cope with being larger or smaller than they expected. AFAIC, the way BorderLayout handles resizing is exactly the behavior you want in many games that have a layout similar to what I described above.
More importantly, I think perhaps you're worrying about resize behavior a bit too soon. First off, the OP is tripping over a more important, and frankly more basic, issue of simply putting components in the desired relative positions. I would recommend getting that down pat, first, before worrying about how resizing is going to effect things. AFAIC, changing the layout managers in order to change the resize behavior, while maintaining the relative positioning of components is one of the easiest refactorings done in a UI.
>
The OP is writing a game.
Just saying.
JSG

Similar Messages

  • How do I get all two or three hours of a podcast ?

    With the new itunes 11.0.1 I can only get the first hour of a two and sometimes three hour podcasts? How do I get all two or three hours?

    Easiest way is to click on the foreground colour which opens the Color Picker dialog box, and changes the cursor to the eye dropper.  Now click on the colour.  If it is crucial that it uses your selected area, copy the selection to a new layer.   I have no idea if you want a point sample, or average of entire selection or what though?

  • How do I get all the music on my IMAC in one folder. We have one IMAC and 3 sign ons. When add a song under one sign on it doesn't add to all 3 libraries.

    How do I get all the music on my IMAC in one ITUNES folder? We have one IMAC, with 3 sign ons for me and my 2 teens. When you add a song under one of the sign ons it doesn't add it to all 3 libraries. Before I updated to LION,  We had one main library with all the songs we bought, imported from cd's etc. Then any of the three of us could add it to our own IPOD instead of buying the song agin. It is one house, one IMAC. It was working fine under Leopard.

    The sort fields should generally be empty unless you've putting in custom values to sort solo artists by their surnames. You can apply common changes to thousands of tracks at once, just don't apply the wrong change because there is no undo.
    It is a good idea to backup before undertaking large scale changes. See this backup tip for a suggested approach.
    tt2
    Message was edited by: turingtest2

  • I have 3 consecutive movie clips that I am trying to drop into the drop zone but it only recognizes the first one and only produces the firts one in a DVD. How can I drop all three  movie clips into one drop zone

    On IDVD, I have 3 consecutive movie clips that I am trying to drop into the drop zone to create a DVD but it only recognizes the first one I dropped and only produced the first one in a DVD. How can I drop all three  movie clips into one drop zone.

    I have had some luck doing the following: Export each clip from imovie as a quicktime clip. Open iDVD and create a new project. Import a few stills into iDVD and then click on the button that gets created to get into the screen where the individual slides appear. Drag each quicktime into that screen and arrange in the order you want. You can then delete the stills. The button that appeared when you dropped in the stills will launch a complete show.

  • I have the IPhone, IPad and MacBook, IPad and IPhone share the same Apple ID and Icloud storage. Cannot make ID Change on MacBook as it says the ID is already taken. How can I make all three match?

    I have the IPhone, IPad and MacBook, IPad and IPhone share the same Apple ID and Icloud storage. Cannot make ID Change on MacBook as it says the ID is already taken. How can I make all three match?

    The problem is that all services are bundled with your Apple ID ([email protected]):
    Your iCloud account (Mail, Contacts, Calendars, Reminders, Notes, Backups, etc.),
    also iTunes & App Store purchases (Music, Movies, TV Shows, etc.),
    and the iTunes Match services.
    (I guess that all your devices - yours and your wife's are connected to one iTunes library, right?)
    If you want that your wife gets her own iCloud account for Mail, Contacts, Calendars, etc. but gets also access to your media then you have two set up two things on her device:
    iCloud (Settings > iCloud) with her account (e.g. [email protected])
    and
    iTunes & App Stores (Settings > iTunes & App Stores) with your account (e.g. [email protected]).
    In this case she gets access to your library and could use the same iTunes Match account.
    (See also: Using one Apple ID for iCloud and a different Apple ID for Store Purchases http://support.apple.com/kb/HT4895)

  • How can i get all values from jtable with out selecting?

    i have one input table and two output tables (name it as output1, output2). Selected rows from input table are displayed in output1 table. The data in output1 table is temporary(means the dat wont store in database just for display purpose).
    Actually what i want is how can i get all values from output1 table to output2 table with out selecting the data in output1 table?
    thanks in advance.
    raja

    You could set the table's data model to be the same:
    output2.setModel( output1.getModel() );

  • How can I get ALL of my Google Calendars to show on the iCal on my iPhone? I see all of my Google Calendars on the iCal on my Mac, but I do not see them in the iCal on my iPhone. I only see one Google Cal, but not the others.

    How can I get ALL of my Google Calendars to show on the iCal on my iPhone?
    I see all of my Google Calendars on the iCal on my Mac, but I do not see them in the iCal on my iPhone. I only see one Google Cal, but not the others.

    https://www.google.com/calendar/iphoneselect

  • My old computer, and external that I had everything backed up on broke. Majority of my music I got from burning CD's that I no longer have. How can I get all my music on my iPod onto my new iTunes?

    Like I said, my back up broke and I can't get all of my music back by transfering purchases because I burned a lot of CD's I had collected from the past. I don't have any of those CD's anymore, so how can I get all of my music onto my new iTunes? Or am I just S.O.L.?

    Phone to Mac,this app lets you easily copy, transfer the music, videos and playlists from any iPod or iPhone directly into iTunes on any Mac.

  • How do I get all contacts from my iphone 4 to icloud?

    how do I get all contacts from my iphone 4 to icloud? I've just got some of them.

    All you have to do is enable iCloud on your phone and turn notes on.  They should automatically appear on your phone.

  • I have an IMAP mailbox that seems to only show mail 7 days old on my iMac running Snow Leopard.However, all old emails that I have not deleted are showing up on my macbook pro running the next OS (Lion?).  How do I get all my old emails back on my iMac?

    I have an IMAP mailbox that seems to only show mail 7 days on my iMac running Snow Leopard.  However, on my MacBook Pro I can see all old mail that I have not deleted.  It is running the next operating system (Lion?).  Does anyone know how I can get all my old mail back on my iMac.  It is my primary computer and I need some of those old messages.  I have tried to rebuild the mailbox but it has not done anything.

    I have tried to rebuild the mailbox to no avail.  The mailbox behavior says:  Drafts (not checked) store draft messages on the server, Notes (checked) show not in Inbox, Sent (checked) Store sent messages on the server Delete sent messages when (option never selected), Junt (not checked) store junk messages on the server Delete junk messages when (option never selected), Trash (checked) moves deleted messages to the Trash mailbox and (checked)  store deleted messages on the server Permanently erase deleted messages when (one month old option selected).
    I have not set up any rules that I know of other than a signature, in the very least I have not changed any.

  • I have to re-install itunes, how can I get all my songs, apps etc back, with no access to my old itunes??

    Itines was deleted from my computer and I need to re-install it but dont want to lose all my songs, apps etc. How can I get all this back onto itunes with no access to my old itunes??

    Itunes was deleted?  Or your itunes library was deleted?
    If it was just itunes, then your music should still be there.  Just reinstall itunes.
    Otherwise just use your backup copy of your comuter to put everything back.

  • How can I get all prctr ( profit centers ) ?

    While creating function module,
    I have created import parameter as 'ZIMPORT_PRCTR' for Profit Center
    ( cepc-prctr ) in my zfunction module .
    It takes( imports ) input of multiple values Profit Center.
    Next what I need to do is, if end user enters multiple values of profit center
    ( IF ZIMPORT_PRCTR[] IS NOT INITIAL. )
    Then…  I have to use user entered values for picking up some other data from other tables.
    Ques). IF user don’t enter any profit center value, then
    I need to take all profit centers into consideration and pick up other data from other tables  .
    How can I get all profit centers ( if user does’t enters any value )
    And I don't have any values to use in my where condition ?
    Could you please help me ?

    create one structure in Se11 like
    profit center low
    profit center high
    option
    sign ( Like select-option ,see the rsparams structure),use this strucire in Function module ..
    when compare the data in select query ,in where condition use as in operator,if user does not enter any value ,it gets the all the value from table.

  • How can I get all Login/Logout details

    How can I get all Login/Logout details of all SAP Users from SAP Server/Database of any one year? I am asking about SAP License User. Is their any Table or Report by which I can get these details? For example USR02(Logon Data) Table store the last login/logout details of SAP Users. So in same way is any table which store Users Login/Logout details through out a year or month.

    Hi Sudheer,
    Check this .
    You can find the transactions by a particular user from the transaction SM04.
    SM04 gives you the details of the users logged in,terminals,transactions the user is working on, the time he has logged in,no of sessions user has opened, and the memory used by the user's programs... all of that w.r.t to the client we login. but we can't get info like date and number of times the user has logged in.
    U can see tables:
    USR01 User master record (runtime data)
    USR02 Logon data
    USR03 User address data
    USR05 User Master Parameter ID
    USR12 User master authorization values
    plz rewards points if helpful
    cheers
    srinivas.k
    Edited by: k srinivas on Apr 28, 2008 11:54 AM

  • How can i get all these values in single row with comma separated?

    I have a table "abxx" with column "absg" Number(3)
    which is having following rows
    absg
    1
    3
    56
    232
    43
    436
    23
    677
    545
    367
    xxxxxx No of rows
    How can i get all these values in single row with comma separated?
    Like
    output_absg
    1,3,56,232,43,436,23,677,545,367,..,..,...............
    Can you send the query Plz!

    These all will do the same
    create or replace type string_agg_type as object
    2 (
    3 total varchar2(4000),
    4
    5 static function
    6 ODCIAggregateInitialize(sctx IN OUT string_agg_type )
    7 return number,
    8
    9 member function
    10 ODCIAggregateIterate(self IN OUT string_agg_type ,
    11 value IN varchar2 )
    12 return number,
    13
    14 member function
    15 ODCIAggregateTerminate(self IN string_agg_type,
    16 returnValue OUT varchar2,
    17 flags IN number)
    18 return number,
    19
    20 member function
    21 ODCIAggregateMerge(self IN OUT string_agg_type,
    22 ctx2 IN string_agg_type)
    23 return number
    24 );
    25 /
    create or replace type body string_agg_type
    2 is
    3
    4 static function ODCIAggregateInitialize(sctx IN OUT string_agg_type)
    5 return number
    6 is
    7 begin
    8 sctx := string_agg_type( null );
    9 return ODCIConst.Success;
    10 end;
    11
    12 member function ODCIAggregateIterate(self IN OUT string_agg_type,
    13 value IN varchar2 )
    14 return number
    15 is
    16 begin
    17 self.total := self.total || ',' || value;
    18 return ODCIConst.Success;
    19 end;
    20
    21 member function ODCIAggregateTerminate(self IN string_agg_type,
    22 returnValue OUT varchar2,
    23 flags IN number)
    24 return number
    25 is
    26 begin
    27 returnValue := ltrim(self.total,',');
    28 return ODCIConst.Success;
    29 end;
    30
    31 member function ODCIAggregateMerge(self IN OUT string_agg_type,
    32 ctx2 IN string_agg_type)
    33 return number
    34 is
    35 begin
    36 self.total := self.total || ctx2.total;
    37 return ODCIConst.Success;
    38 end;
    39
    40
    41 end;
    42 /
    Type body created.
    [email protected]>
    [email protected]> CREATE or replace
    2 FUNCTION stragg(input varchar2 )
    3 RETURN varchar2
    4 PARALLEL_ENABLE AGGREGATE USING string_agg_type;
    5 /
    CREATE OR REPLACE FUNCTION get_employees (p_deptno in emp.deptno%TYPE)
    RETURN VARCHAR2
    IS
    l_text VARCHAR2(32767) := NULL;
    BEGIN
    FOR cur_rec IN (SELECT ename FROM emp WHERE deptno = p_deptno) LOOP
    l_text := l_text || ',' || cur_rec.ename;
    END LOOP;
    RETURN LTRIM(l_text, ',');
    END;
    SHOW ERRORS
    The function can then be incorporated into a query as follows.
    COLUMN employees FORMAT A50
    SELECT deptno,
    get_employees(deptno) AS employees
    FROM emp
    GROUP by deptno;
    ###########################################3
    SELECT SUBSTR(STR,2) FROM
    (SELECT SYS_CONNECT_BY_PATH(n,',')
    STR ,LENGTH(SYS_CONNECT_BY_PATH(n,',')) LN
    FROM
    SELECT N,rownum rn from t )
    CONNECT BY rn = PRIOR RN+1
    ORDER BY LN desc )
    WHERE ROWNUM=1
    declare
    str varchar2(32767);
    begin
    for i in (select sal from emp) loop
    str:= str || i.sal ||',' ;
    end loop;
    dbms_output.put_line(str);
    end;
    COLUMN employees FORMAT A50
    SELECT e.deptno,
    get_employees(e.deptno) AS employees
    FROM (SELECT DISTINCT deptno
    FROM emp) e;
    DEPTNO EMPLOYEES
    10 CLARK,KING,MILLER
    20 SMITH,JONES,SCOTT,ADAMS,FORD
    30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
    CREATE OR REPLACE FUNCTION concatenate_list (p_cursor IN SYS_REFCURSOR)
    RETURN VARCHAR2
    IS
    l_return VARCHAR2(32767);
    l_temp VARCHAR2(32767);
    BEGIN
    LOOP
    FETCH p_cursor
    INTO l_temp;
    EXIT WHEN p_cursor%NOTFOUND;
    l_return := l_return || ',' || l_temp;
    END LOOP;
    RETURN LTRIM(l_return, ',');
    END;
    COLUMN employees FORMAT A50
    SELECT e1.deptno,
    concatenate_list(CURSOR(SELECT e2.ename FROM emp e2 WHERE e2.deptno = e1.deptno)) employees
    FROM emp e1
    GROUP BY e1.deptno;
    DEPTNO EMPLOYEES
    10 CLARK,KING,MILLER
    20 SMITH,JONES,SCOTT,ADAMS,FORD
    30 ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
    CREATE OR REPLACE TYPE t_string_agg AS OBJECT
    g_string VARCHAR2(32767),
    STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
    RETURN NUMBER,
    MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
    value IN VARCHAR2 )
    RETURN NUMBER,
    MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
    returnValue OUT VARCHAR2,
    flags IN NUMBER)
    RETURN NUMBER,
    MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
    ctx2 IN t_string_agg)
    RETURN NUMBER
    SHOW ERRORS
    CREATE OR REPLACE TYPE BODY t_string_agg IS
    STATIC FUNCTION ODCIAggregateInitialize(sctx IN OUT t_string_agg)
    RETURN NUMBER IS
    BEGIN
    sctx := t_string_agg(NULL);
    RETURN ODCIConst.Success;
    END;
    MEMBER FUNCTION ODCIAggregateIterate(self IN OUT t_string_agg,
    value IN VARCHAR2 )
    RETURN NUMBER IS
    BEGIN
    SELF.g_string := self.g_string || ',' || value;
    RETURN ODCIConst.Success;
    END;
    MEMBER FUNCTION ODCIAggregateTerminate(self IN t_string_agg,
    returnValue OUT VARCHAR2,
    flags IN NUMBER)
    RETURN NUMBER IS
    BEGIN
    returnValue := RTRIM(LTRIM(SELF.g_string, ','), ',');
    RETURN ODCIConst.Success;
    END;
    MEMBER FUNCTION ODCIAggregateMerge(self IN OUT t_string_agg,
    ctx2 IN t_string_agg)
    RETURN NUMBER IS
    BEGIN
    SELF.g_string := SELF.g_string || ',' || ctx2.g_string;
    RETURN ODCIConst.Success;
    END;
    END;
    SHOW ERRORS
    CREATE OR REPLACE FUNCTION string_agg (p_input VARCHAR2)
    RETURN VARCHAR2
    PARALLEL_ENABLE AGGREGATE USING t_string_agg;
    /

  • How can I get all photos from iPhoto to automatically back up to iCloud from my Mac OSX Version 10.6.8 operating system.  Not enough memory to upgrade.

    How can I get all photos from iPhoto to automatically back up to iCloud from my Mac OSX Version 10.6.8 operating system.  Not enough memory to upgrade.

    You can't.  iCloud is not for general file backup from a Mac. It's for backup up and syncing data between mobile devices and and Macs and  The following is from this Apple document: iCloud: Backup and restore overview.
    iCloud automatically backs up the most important data on your (mobile) device using iOS 5 or later. Once you have enabled Backup on your iPhone, iPad, or iPod touch .....
    What is backed up
    You get unlimited free storage for:
    Purchased music, movies, TV shows, apps, and books
    Notes: Backup of purchased music is not available in all countries. Backups of purchased movies and TV shows are U.S. only. Previous purchases may not be restored if they are no longer in the iTunes Store, App Store, or iBookstore.
    Some previously purchased movies may not be available in iTunes in the Cloud. These movies will indicate that they are not available in iTunes in the Cloud on their product details page in the iTunes Store. Previous purchases may be unavailable if they have been refunded or are no longer available in the iTunes Store, App Store, or iBookstore.
    You get 5 GB of free iCloud storage for:
    Photos and videos in the Camera Roll
    Device settings (for example: Phone Favorites, Wallpaper, and Mail, Contacts, Calendar accounts)
    App data
    Home screen and app organization
    Messages (iMessage, SMS, and MMS)
    Ringtones
    Visual Voicemails
    But not from a Mac.  If you want to backup your photos and other important files I suggest you get an external hard drive and use  it with Time Machine.
    OT

Maybe you are looking for

  • PO Delivery time

    Hi gurus, Something really strange is going on, when I create manually a PO system should calculate the delivery time based on GR time + planned delivery time + values at vendor level or purchasing organization. I have neither of this values but the

  • Web Service Process does not translate 2nd parameter object

    Hi, I have a a web service that has 3 paramaters. Param 1 = string Param 2 = custom object Param 3 = same custom object When I create the web service process it correctly translates Param 2 into the object items. i.e. int, string, boolean, string, da

  • Selecting Text

    When selecting text in a PDF to copy, the tool selects way more than what i am trying to select. Anyone know how to fix this? I just want to select the specific text i am targeting it's almost like the tool thinks the font size is massive or somethin

  • Custom stamp naming

    I've created some custom stamps in Acrobat Standard X. I then edit the pdf in my stamps folder which contains the stamp and add text fields and use javascript to create a custom colculation script when the stamp is used (to bring up a prompt so the u

  • Windows 7 home premium pc keeps powering down after startup.

    Windows 7 home premium pc keeps powering down after startup The only thing I have noticed different is the heat sink fan RPMS rev quicker and seem to stay reved for longer periods. The COMPONENTS ARE DUST FREE. Components do not feel warm to the touc