Checking status of an internal frame
I am writting an application that uses seperate class file for internal frames. I want to use a Menu Bar that will open the internal frame if it is closed or bring it to the foreground if it is open but behind another internal frame or restore the internal frame if it is minimized.
I can create the internal frame easy enough with the following (this is the code that I call when the Menu Item is clicked:
// Create a "SETUP" internal frame
MyinternalFrame if_Setup = new MyinternalFrame("SETUP");
// Add it to the desktop
myDesktop.add(if_Setup);How to I check the condition of my internal frame, if_Setup?
there are many programmes available in globalleafs.com 's download. they helped me alot. try it.
Similar Messages
-
SRM 7.0 Modify POWL for shopping cart check status screen
HI Experts,
The standard settings in check status for SC in SRM 7.0 is to display the sc with item level. This causes the SC number to be repeated (for no. of items in SC) and all links open the same SC in a new window.
We want to display only the header of SC and no item data should be displayed in check status.
I tried
SRM Server->Cross-Application Basic Settings->POWL and Advance Search->Adjust POWL Layout,search criteria and push buttons----choose feeder type SAPSRM_FEEDER_SC -double click field catalog-choose ITEM_DESCR, ITEM_NO, ITEM_STATUS---CHOOSE display and select HIDDEN COLUMN radio button.
This hides the corresponding columns but duplicate records are still showing.
Can some one please help?
Thanks,
AnubhavHi NM,
After performing the steps in first post for hiding item relevant fields you can filter the data displayed in the result by using the BADI /SAPSRM/BD_POWL_CHNG_SEL_RSLT .
In the BADI Delete the records from result internal table where SC num is repeated so that thers only one entry for each SC.
Let me know if it works for you or not.
BR,
Anubhav -
Capturing check box value into internal table
Hi all,
I am displaying the output including check box through following internal table.
The checkbox is displayed before every record.
<b>LOOP AT it_qals.
WRITE:/ it_qals-t_val AS CHECKBOX,
5 it_qals-werk,
12 it_qals-prueflos,
30 it_qals-matnr,
50 it_qals-charg,
62 it_qals-lagortchrg.
hide: it_qals .
ENDLOOP.</b>
I selected some of the records through check the checkboxes. when i click the <b>PUSHBUTTON TRANSFER</b>, those selected records only should transfer. i don't know how to modify the internal table with latest checkbox values. Initially checkbox values are blank.
Is there any solution except Function Module.
i would appreciate an earlier reply.
Regards
PrabhuHello,
Create one more table and transfer your entries into new table.
I have attached my code for you.
Regards,
Naimesh
REPORT ZTEST_NP NO STANDARD PAGE HEADING.
TABLES: MARA, MAKT.
DATA: BEGIN OF IT_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
SEL,
END OF IT_MARA.
DATA: IT_MARA1 LIKE IT_MARA OCCURS 0 WITH HEADER LINE.
START-OF-SELECTION.
SET PF-STATUS 'ZTEST'.
PERFORM GET_DATA.
PERFORM WRITE_DATA.
TOP-OF-PAGE.
PERFORM HEADER.
AT USER-COMMAND.
CASE SY-UCOMM.
WHEN 'SELECT'.
PERFORM GET_DATA_SELECTED.
PERFORM WRITE_DATA_SELE.
WHEN 'SELALL'.
PERFORM SELECT_ALL.
SY-LSIND = 0.
PERFORM HEADER.
PERFORM WRITE_DATA.
WHEN 'DESEL'.
PERFORM DESELECT_ALL.
SY-LSIND = 0.
PERFORM HEADER.
PERFORM WRITE_DATA.
ENDCASE.
*& Form GET_DATA
FORM GET_DATA.
SELECT MATNR
INTO TABLE IT_MARA
FROM MARA
WHERE MATNR LIKE 'IN10020%'.
LOOP AT IT_MARA.
SELECT SINGLE MAKTX
INTO IT_MARA-MAKTX
FROM MAKT
WHERE MATNR = IT_MARA-MATNR
AND SPRAS = SY-LANGU.
MODIFY IT_MARA.
CLEAR IT_MARA.
ENDLOOP.
ENDFORM. " GET_DATA
*& Form WRITE_DATA
FORM WRITE_DATA.
ULINE /(50).
LOOP AT IT_MARA.
WRITE: / '|' NO-GAP, IT_MARA-SEL AS CHECKBOX NO-GAP,
'|' NO-GAP, (10) IT_MARA-MATNR NO-GAP,
'|' NO-GAP, (35) IT_MARA-MAKTX NO-GAP,
'|' NO-GAP.
ENDLOOP.
ULINE /(50).
ENDFORM. " WRITE_DATA
*& Form HEADER
FORM HEADER.
ULINE /(50).
WRITE: / '|' NO-GAP, (1) ' ' NO-GAP,
'|' NO-GAP, (10) 'Material' NO-GAP,
'|' NO-GAP, (35) 'Description' NO-GAP,
'|' NO-GAP.
ENDFORM. " HEADER
*& Form GET_DATA_SELECTED
FORM GET_DATA_SELECTED.
DATA: L_CNT TYPE I.
DO.
L_CNT = L_CNT + 1.
READ LINE L_CNT FIELD VALUE IT_MARA-MATNR INTO IT_MARA1-MATNR
IT_MARA-MAKTX INTO IT_MARA1-MAKTX
IT_MARA-SEL INTO IT_MARA1-SEL.
IF SY-SUBRC = 0.
IF IT_MARA1-SEL = 'X'.
APPEND IT_MARA1.
CLEAR IT_MARA1.
ENDIF.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDFORM. " GET_DATA_SELECTED
*& Form WRITE_DATA_SELE
FORM WRITE_DATA_SELE.
PERFORM HEADER.
ULINE /(50).
LOOP AT IT_MARA1.
WRITE: / '|' NO-GAP, IT_MARA1-SEL AS CHECKBOX,
'|' NO-GAP, (10) IT_MARA1-MATNR NO-GAP,
'|' NO-GAP, (35) IT_MARA1-MAKTX NO-GAP,
'|' NO-GAP.
ENDLOOP.
ULINE /(50).
ENDFORM. " WRITE_DATA_SELE
*& Form SELECT_ALL
FORM SELECT_ALL.
LOOP AT IT_MARA.
IT_MARA-SEL = 'X'.
MODIFY IT_MARA.
CLEAR IT_MARA.
ENDLOOP.
ENDFORM. " SELECT_ALL
*& Form DESELECT_ALL
FORM DESELECT_ALL.
LOOP AT IT_MARA.
IT_MARA-SEL = ' '.
MODIFY IT_MARA.
CLEAR IT_MARA.
ENDLOOP.
ENDFORM. " DESELECT_ALL -
Returns status code '500' (Internal Server Error) in response
Hi,
I got error like
HTTP connection to http://XXX.com:50600/sap/xi/cache?sap-client=001 returns status code '500' (Internal Server Error) in response
I did check this Discussion HTTP returns status is 500(Internal Server Error)
But I don't understand can someone help me in detail.
Thanks
KamalHi All,
When I check RFC destination configuration with following information.
RFC Destination as "INTEGRATION_DIRECTORY_HMI"
Connection Type: H
Under Technical Setting TAB
Target Host: write the host name
Path Prefix: /dir/CacheRefresh
Service No: enter J2ee port no (e.g. 50000)
Under Logon/Security TAB
select Basic Authontication radio button
SSL select inactive
Under Logon:
Lang: EN
Client: enter client
User: XIISUSER
Password: *******
Under Special Option TAB
HTTP Setting:
HTTP Ver: HTTP 1.0
Compression: inactive
Compressed response: NO
HTTP Cookies: Yes (All)
This is the test result.
Status HTTP response : 403
Status text : Forbidden
Duration test call : 163 ms
Please help me.
Thanks,
Kamal -
Link in check Status page of Shopping cart
Hi all,
I need to place a link in check status->details page only.
Its a standard Internet service page.
there are many ITS pages, where to go and place the code.
please help.
Regards,
Rohith.Hi Rohith
It is difficult to help you as your post does not make much sense, exactly which frame of the Check status are you speaking of? In the check status screen (at least for SRM 5.0) there are two main frames, the 'Find' screen also containing the extended search option and also the search result pane, both relate to saplbbp_sc_ui_its_4000.html template.
In general, if you want to determine which screen to modify, just right click over the particular frame, view source and you will find the associated template.
Regards,
Jason -
Moving Icon in Internal Frame?
Is it possible to add an icon into an Internal Frame, then move this
icon ("help" or question mark) onto certain topic, where a popup (and
text in it) appears? Are there any classes or methods that I should use?
"Beginner"Check out the JavaHelp framework, it will probably do what you want:
http://java.sun.com/products/javahelp/ -
How to debugg shoping cart check status
Hi guys,
can any one explain me brif about How to debugg shoping cart check status and farther steps in that and give me the screen no's and program's.
thanks,
muraliHi
Which SRM version are you using ? What is your detailed business requirement ?
<u>See these link -></u>
Re: Debugging Shopping Cart
<b>Other related information.</b>
<u>We can debug the shopping cart from sap GUI via tran. /nBBPSC01
1 Click on internal Goods/services and select the product for which you want to create a SC and press enter.
2 In command window input /h and press enter
3 Click on the button Order it will go in debug mode.
4 Insert break points on Statement - Select
5 Insert break points on Statement - Insert
6 Insert break points on Statement - update
and press F5 key to move one step ahead and F8 key to halt directly at each break point.This way go upto the save mode and order your SC at run time in debug mode.</u>
Hope this will help.
Regards
- Atul -
When i use the dispose method of the internal frame and dispose it,and then i call desktop.getComponents to check if the internal frame is removed,it still exists and
desktop.getComponents returns the frame.
How do i remove the frame from the desktop?I guess you have the answer in that question. desktop.remove(....);
-
I want to add a scrollpane to a blank JInternalFrame.How should i do it.The Internal frame has a null layout.Thanx
Hi , sorry you have to add the JScrollpane direct to the ContentPane. Let the Layout
of the ContentPane unchanged. (BorderLayout).
Using Flowlayout won't get you any benifit from extra space.
You can use setResizeable(true) and resize the Frame to check if the Scrollbars appear's.
They will only apper if nessary.
During Runntime:
do something like this: (f2 is an InternalFrame)
f2.setVisible(false); // it's important, to enable an correct repainting-proze�
f2.getContentPane().removeAll(); // If you wnt to remove some old components
f2.getContentPane().add(new JScrollPane(yourPanel) ); //your Components
f2.setVisible(true );Hope this helps.
Greetings Michael -
Hi,
I am writing a piece of code where I want to able to choose from a menu a screen that displays multiple graphs (using Internal frames.) I am using cardlayout to bring up the various options I choose from the menu. I have simplified my program as much as possible but I still seem to be getting the same error
Exception in thread "main" java.lang.IllegalArgumentException: adding a window to a container .......
I know I shouldn't be adding a window to a container but I can't see how I can change my code so it has the functionality I desire.
Here is the code I am using
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame
public Test()
JPanel card1 = new JPanel();
card1.add(new InternalFrameDemo());
getContentPane().add(card1);
public static void main(String[] args)
Test frame = new Test();
frame.setDefaultCloseOperation( EXIT_ON_CLOSE );
frame.setSize(200, 200);
frame.setLocationRelativeTo( null );
frame.setVisible(true);
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class InternalFrameDemo extends JFrame
JDesktopPane desktop;
static final int xOffset = 30, yOffset = 30;
private JLabel graph1;
private String Graph1;
public InternalFrameDemo() {
super("InternalFrameDemo");
//Make the big window be indented 50 pixels from each edge
//of the screen.
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset,
screenSize.width - inset*2,
screenSize.height - inset*2);
//Set up the GUI.
desktop = new JDesktopPane(); //a specialized layered pane
createFrame(); //create first "window"
setContentPane(desktop);
//Make dragging a little faster but perhaps uglier.
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
//Create a new internal frame.
protected void createFrame() {
MyInternalFrame frame = new MyInternalFrame();
frame.setVisible(true);
desktop.add(frame);
try {
frame.setSelected(true);
} catch (java.beans.PropertyVetoException e) {}
//Quit the application.
protected void quit() {
System.exit(0);
public void MyInternalFrame() {
System.out.println("graph1");
graph1 = new JLabel("",
new ImageIcon("../images/Graph1.jpg"),
JLabel.CENTER);
getContentPane().add(graph1);
//...Then set the window size or call pack...
setSize(500,550);
}If anyone could point me in the right direction it would be great. Thanks in advance!But I actually do not understand what that card layout thing is all about. If you want to hide/show internal frames you can simply use setVisible() and setSelected() like examplified below (I did put all code in the same file for my convenince). I have put a text in the label so that you can see that it is replaced. Using aJLabel to show an image is however a little bit weird.
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
class MyInternalFrame extends JInternalFrame
private JLabel graph1;
public MyInternalFrame(String text)
graph1 = new JLabel(text,
new ImageIcon("../images/Graph1.jpg"),
JLabel.CENTER);
getContentPane().add(graph1);
setSize(500,550);
public class InternalFrameDemo extends JFrame
private JDesktopPane desktop;
private final MyInternalFrame[] frames;
public InternalFrameDemo()
super("InternalFrameDemo");
frames = new MyInternalFrame[3];
//Make the big window be indented 50 pixels from each edge of the screen.
int inset = 50;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset,
screenSize.width - inset*2,
screenSize.height - inset*2);
//Set up the GUI.
desktop = new JDesktopPane(); //a specialized layered pane
setContentPane(desktop);
frames[0] = createFrame("Hello world!");
frames[1] = createFrame("Hello again, world!");
frames[2] = createFrame("Goodbye cruel world!");
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
setSize(500, 500);
Thread animThread = new Thread()
public void run()
for (int i = 0; i < frames.length; ++i)
final int frameId = i;
SwingUtilities.invokeLater(new Runnable()
public void run()
// Hide frame that is showing.
if (frameId != 0)
frames[frameId - 1].setVisible(false);
System.out.println("Replacing image: " + frameId);
frames[frameId].setVisible(true);
try
frames[frameId].setSelected(true);
catch (java.beans.PropertyVetoException exc)
exc.printStackTrace();
try
Thread.sleep(3000);
catch (InterruptedException exc)
exc.printStackTrace();
animThread.start();
//Create a new internal frame.
protected MyInternalFrame createFrame(String text)
MyInternalFrame frame = new MyInternalFrame(text);
desktop.add(frame);
return frame;
public static void main(String[] args)
JFrame frame = new InternalFrameDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}Using lazy initialization where you postpone the creation of an internal frame until it is actually shown would be an improvement.
The setVisible/Selected() call can of course be triggered by something else in your application.
Note that changes of swing components shall be made in the EDT. -
Internal frame dragging perfermance problem in JDK1.4.1
Hi there,
When using internal frame with outline(not faster or LIVE_DRAG_MODE) property with JDK 1.4.1_01 (windows), the speed of internal frame dragging is terrible(very very slow).
The same code runs fine with JDK1.3.X, and it's performance(dragging speed) is acceptable(not very good, so so) when using JDK 1.4.0_X.
I've tried both motheds to set the property as follow, and got the same result:
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
desktop.putClientProperty("JDesktopPane.dragMode", "outline");
But, after I commented the line: g.setXORMode(Color.white); //line Num: 279
in the class javax.swing.DefaultDesktopManager.java, the speed of dragging is very well(as same as when running with JDK1.3.X).
My qestions are:
- How can I improve the internal frame dragging performance in JDK 1.4.1_01(windows)?
- Does my testing mean to a bug in the implementation of the abstract method Graphics.setXORMode() in the JDK 1.4.1_01 windows version ?
TIA
In terms of the test case, we may just use the follows:
http://java.sun.com/docs/books/tutorial/uiswing/components/example-swing/InternalFrameDemo.java
http://java.sun.com/docs/books/tutorial/uiswing/components/example-swing/MyInternalFrame.javaAnyone know if this is registered as a bug? I couldn't find it.
-
Openinig internal frames by clicking menuitems
Hi,
I have been trying to open internal frames by clicking menu items but
have not been able to do so because menuitems support only action listeners and not all mouse event listeners.
Actually I wanted the event to return the frame n which the event has occured
e.g., event,getframe(), so that I could create an internal frame in the same frame.
But such kind of function is unavailable.
Kindly suggest something...the code is given below (it works perfectly)..it need a text file from which the menuitems are read. This is also given below:
import javax.swing.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.lang.*;
import java.io.*;
import javax.swing.plaf.metal.*;
import javax.swing.*;
import javax.swing.undo.*;
class Action extends JFrame
ActionListener FListener = new ActionListener()
public void actionPerformed(ActionEvent event)
{System.out.println("Menu item " + event.getActionCommand( ) +" of File Menu was pressed.");}
ActionListener EListener = new ActionListener()
public void actionPerformed(ActionEvent event)
{System.out.println("Menu item " + event.getActionCommand( ) +" of Edit Menu was pressed.");}
ActionListener VListener = new ActionListener()
public void actionPerformed(ActionEvent event)
{System.out.println("Menu item " + event.getActionCommand( ) +" of View Menu was pressed.");}
ActionListener TListener = new ActionListener()
public void actionPerformed(ActionEvent event)
{System.out.println("Menu item " + event.getActionCommand( ) +" of Tools Menu was pressed.");}
ActionListener HListener = new ActionListener()
public void actionPerformed(ActionEvent event)
{System.out.println("Menu item " + event.getActionCommand( ) +" of Help Menu was pressed.");}
/* protected class MyUndoableEditListener implements UndoableEditListener
protected UndoManager undo = new UndoManager();
public void undoableEditHappened(UndoableEditEvent e)
//Remember the edit and update the menus
undo.addEdit(e.getEdit());
undoAction.updateUndoState();
redoAction.updateRedoState();
class framecreator extends JFrame
public JFrame CreateFrame(JMenuBar m)
JDesktopPane jdp= new JDesktopPane();
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("PEA");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(jdp);
jdp.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
frame.setJMenuBar(m);
frame.pack();
frame.setVisible(true);
frame.setSize(600,600);
frame.setLocation(100,100);
return frame;
class internalframecreator extends JFrame
public JInternalFrame CreateInternalFrame(JFrame f)
Container cp= f.getContentPane();
JInternalFrame jif = new JInternalFrame("internal frame",true,true,true,true);
cp.add(jif);
jif.pack();
jif.setVisible(true);
jif.setSize(300,300);
jif.setLocation(80,80);
return jif;
class menucreator
public String[] filereader()
String[] menuitems=new String[21];
int i=0,j=0;
String record = null;
for(int h=0;h<21;h++){ menuitems[h]=null;}
try {
FileReader fr = new FileReader("projectconfig2.txt");
BufferedReader br = new BufferedReader(fr);
while ( (record=br.readLine()) != null )
StringTokenizer st = new StringTokenizer(record,"\n");
while (st.hasMoreTokens())
menuitems= st.nextToken();
System.out.println(menuitems[i]);
i++;
/* StringTokenizer st1 = new StringTokenizer(record,"\n");
while (st1.hasMoreTokens())
while ( (record=br.readLine()) != null )
StringTokenizer st2 = new StringTokenizer(record,":");
while (st2.hasMoreTokens())
menuitems[i][j]= st2.nextToken();
System.out.println(menuitems[i][j]);
j++;
i++;
} catch(IOException e)
System.out.println("Error reading file");
return (menuitems);
public JMenuBar CreateMenu(Action a, String menuitems[])
JMenuBar mb = new JMenuBar();
JMenu fileB = new JMenu(menuitems[0]);
JMenu editB = new JMenu(menuitems[8]);
JMenu viewB = new JMenu(menuitems[11]);
JMenu toolsB = new JMenu(menuitems[14]);
JMenu helpB = new JMenu(menuitems[18]);
mb.add(fileB);
mb.add(editB);
mb.add(viewB);
mb.add(toolsB);
mb.add(helpB);
JMenuItem newpolicyB = new JMenuItem(menuitems[1]);
newpolicyB.addActionListener(a.FListener);
//newpolicyB.addUndoableEditListener(new MyUndoableEditListener());
JMenuItem openB = new JMenuItem(menuitems[2]);
openB.addActionListener(a.FListener);
JMenuItem saveB = new JMenuItem(menuitems[3]);
saveB.addActionListener(a.FListener);
JMenuItem saveasB = new JMenuItem(menuitems[4]);
saveasB.addActionListener(a.FListener);
JMenuItem printxmlB = new JMenuItem(menuitems[5]);
printxmlB.addActionListener(a.FListener);
JMenuItem printreadablepolicyB = new JMenuItem(menuitems[6]);
printreadablepolicyB.addActionListener(a.FListener);
JMenuItem exitB = new JMenuItem(menuitems[7]);
exitB.addActionListener(a.FListener);
JMenuItem undoB = new JMenuItem(menuitems[9]);
undoB.addActionListener(a.EListener);
JMenuItem redoB = new JMenuItem(menuitems[10]);
redoB.addActionListener(a.EListener);
JMenuItem xmlB = new JMenuItem(menuitems[12]);
xmlB.addActionListener(a.VListener);
JMenuItem readablepolicyB = new JMenuItem(menuitems[13]);
readablepolicyB.addActionListener(a.VListener);
JMenuItem validateB = new JMenuItem(menuitems[15]);
validateB.addActionListener(a.TListener);
JMenuItem signandpublishB = new JMenuItem(menuitems[16]);
signandpublishB.addActionListener(a.TListener);
JMenuItem optionsB = new JMenuItem(menuitems[17]);
optionsB.addActionListener(a.TListener);
JMenuItem pemanualB = new JMenuItem(menuitems[19]);
pemanualB.addActionListener(a.HListener);
JMenuItem aboutB = new JMenuItem(menuitems[20]);
aboutB.addActionListener(a.HListener);
fileB.add(newpolicyB);
fileB.add(openB);
fileB.add(saveB);
fileB.add(saveasB);
fileB.add(printxmlB);
fileB.add(printreadablepolicyB);
fileB.add(exitB);
editB.add(undoB);
editB.add(redoB);
viewB.add(xmlB);
viewB.add(readablepolicyB);
toolsB.add(validateB);
toolsB.add(signandpublishB);
toolsB.add(optionsB);
helpB.add(pemanualB);
helpB.add(aboutB);
mb.setSize(300,200);
mb.setVisible(true);
return mb;
public class project
public static void main(String args[])
Action a =new Action();
framecreator fc=new framecreator();
menucreator mc=new menucreator();
internalframecreator ifc= new internalframecreator();
ifc.CreateInternalFrame(fc.CreateFrame(mc.CreateMenu(a,mc.filereader())));
The text file called projectconfig2.txt
File
New Policy
Open...
Save
Save As...
Print XML
Print Readable Policy
Exit
Edit
Undo
Redo
View
XML
Readable Policy
Tools
Validate
Sign & Publish
Options
Help
PE Manual
AboutThe problem is that you are adding the JInternalFrame to the JFrame's contentPane when it should be added to the JDesktopPane. See your code ...
public JInternalFrame CreateInternalFrame( JFrame f )
Container cp = f.getContentPane();
JInternalFrame jif = new JInternalFrame("internal frame",true,true,true,true);
cp.add( jif ); -
Hello,
I have written some custom internal frames, along with their UI's, title panes, and desktop icons. Everything seems to work fine when I'm in JBuilder and I use the "run" command, but when I compile the program and run it as a batch file, my internal frames appear as gray boxes that can't be moved or resized.
package KComponent;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import Theme.*;
import java.io.*;
import javax.swing.border.*;
public class KInternalFrame extends JInternalFrame {
private JLabel titleLabel;
private String title;
public static Color titleColor = Color.white;
public static Color titleBarColor = Theme.DARK;
private KButton maximize, minimize, normalize;
private static final String PATH = "pics" + File.separator;
public KInternalFrame(String title) {
super(title, true, false, true, true);
this.title = title;
this.titleColor = titleColor;
this.titleBarColor = titleBarColor;
//getContentPane().add(content, BorderLayout.CENTER);
//setContentPane(content);
//LineBorder line = new LineBorder(titleBarColor, 2);
//setBorder(line);
setBorder(BorderFactory.createRaisedBevelBorder());
this.getDesktopIcon().setUI(new KDesktopIconUI(title, titleBarColor, titleColor));
setUI(new KInternalFrameUI(this));
package KComponent;
import javax.swing.plaf.basic.*;
import javax.swing.*;
import java.awt.*;
import Theme.*;
public class KInternalFrameUI extends BasicInternalFrameUI {
public KInternalFrameUI(JInternalFrame frame) {
super(frame);
protected void installDefaults(){
Icon frameIcon = frame.getFrameIcon();
frame.setFrameIcon(null);
/* enable the content pane to inherit background color from its
parent by setting its background color to null. Fixes bug#
4268949. */
JComponent contentPane = (JComponent) frame.getContentPane();
if (contentPane != null) {
Color bg = contentPane.getBackground();
else {
Color bg = null;
//LookAndFeel.installBorder(frame, "InternalFrame.border");
protected JComponent createNorthPane(JInternalFrame w) {
titlePane = new KInternalFrameTitlePane(w, w.getTitle(), Theme.DARK, Color.white);
return titlePane;
package KComponent;
import javax.swing.plaf.basic.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import Theme.*;
public class KInternalFrameTitlePane extends BasicInternalFrameTitlePane implements ActionListener {
private JInternalFrame frame;
private final String PATH = "pics" + File.separator;
private KButton maxButton;
private KButton minButton;
private KButton normButton;
private JLabel titleLabel;
private File maxIcon = new File(PATH, "maximize.gif");
private File maxOver = new File(PATH, "maximize_rollover.gif");
private File minIcon = new File(PATH, "minimize.gif");
private File minOver = new File(PATH, "minimize_rollover.gif");
private File norIcon = new File(PATH, "normal.gif");
private File norOver = new File(PATH, "normal_rollover.gif");
String title;
Color activeTitle;
Color activeTitleText;
Color inactiveTitle;
Color inactiveTitleText;
public KInternalFrameTitlePane(JInternalFrame frame, String title, Color activeTitle, Color activeTitleText) {
super(frame);
this.frame = frame;
this.title = title;
this.activeTitle = activeTitle;
this.activeTitleText = activeTitleText;
//this.inactiveTitle = inactiveTitle;
//this.inactiveTitleText = inactiveTitleText;
installTitlePane();
public void installTitlePane() {
titleLabel = new JLabel(" " + title + " ");
titleLabel.setFont(new Font("verdana", Font.PLAIN, 11));
titleLabel.setForeground(activeTitleText);
titleLabel.setBorder(null);
titleLabel.setOpaque(false);
File icon = new File(PATH, "maximize.gif");
File rollover = new File(PATH, "maximize_rollover.gif");
maxButton = new KButton(icon, rollover, rollover, false);
maxButton.setOpaque(false);
maxButton.setToolTipText("Maximize window");
maxButton.setActionCommand("maximize");
//maxButton.addActionListener(this);
icon = new File(PATH, "minimize.gif");
rollover = new File(PATH, "minimize_rollover.gif");
minButton = new KButton(icon, rollover, rollover, false);
minButton.setOpaque(false);
minButton.setToolTipText("Minimize window");
minButton.setActionCommand("minimize");
//minButton.addActionListener(this);
icon = new File(PATH, "normal.gif");
rollover = new File(PATH, "normal_rollover.gif");
normButton = new KButton(icon, rollover, rollover, false);
normButton.setOpaque(false);
normButton.setToolTipText("Normalize window");
normButton.setActionCommand("normal");
//normButton.addActionListener(this);
JPanel buttonHeader = new JPanel(new GridLayout(1, 3, 0, 0));
buttonHeader.setOpaque(false);
buttonHeader.add(minButton);
buttonHeader.add(normButton);
buttonHeader.add(maxButton);
JPanel titlePane = new JPanel(new BorderLayout());
titlePane.setBackground(activeTitle);
titlePane.add(titleLabel, BorderLayout.WEST);
titlePane.add(buttonHeader, BorderLayout.EAST);
setBackground(activeTitle);
setLayout(new BorderLayout());
//add(titleLabel, BorderLayout.WEST);
//add(buttonHeader, BorderLayout.EAST);
add(titlePane, BorderLayout.CENTER);
//installDefaults();
createActions();
enableActions();
//createActionMap();
assembleSystemMenu();
createButtons();
protected void createButtons() {
minButton.addActionListener(iconifyAction);
minButton.setActionCommand("minimize");
minButton.addActionListener(this);
maxButton.addActionListener(maximizeAction);
maxButton.setActionCommand("maximize");
maxButton.addActionListener(this);
normButton.addActionListener(restoreAction);
normButton.setActionCommand("normal");
normButton.addActionListener(this);
//setButtonIcons();
public void setButtonIcons() {}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("maximize")) {
maxButton.setEnabled(false);
minButton.setEnabled(true);
else if (command.equals("minimize")) {
//maxButton.setEnabled(true);
//minButton.setEnabled(false);
else if (command.equals("normal")) {
maxButton.setEnabled(true);
minButton.setEnabled(true);
package KComponent;
import javax.swing.plaf.basic.BasicDesktopIconUI;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.File;
import javax.swing.border.*;
public class KDesktopIconUI extends BasicDesktopIconUI {
private final String PATH = "pics" + File.separator;
private File norIcon = new File(PATH, "normal.gif");
private File norOver = new File(PATH, "normal_rollover.gif");
JComponent iconPane;
String title;
Color activeTitle;
Color activeTitleText;
KButton norButton;
MouseInputListener mouseInputListener;
public KDesktopIconUI(String title, Color activeTitle, Color activeTitleText) {
this.title = title;
this.activeTitle = activeTitle;
this.activeTitleText = activeTitleText;
protected void installComponents() {
frame = desktopIcon.getInternalFrame();
norButton = new KButton(norIcon, norOver, norOver, false);
norButton.setOpaque(true);
norButton.setBackground(activeTitle);
iconPane = new JPanel(new BorderLayout());
JLabel jlTitle = new JLabel(" " + title + " ");
jlTitle.setFont(new Font("verdana", Font.PLAIN, 11));
jlTitle.setForeground(activeTitleText);
jlTitle.setBackground(activeTitle);
jlTitle.setOpaque(true);
iconPane.add(jlTitle, BorderLayout.CENTER);
iconPane.add(norButton, BorderLayout.EAST);
desktopIcon.setLayout(new BorderLayout());
desktopIcon.add(iconPane, BorderLayout.CENTER);
desktopIcon.setBackground(activeTitle);
desktopIcon.setForeground(activeTitleText);
iconPane.setBorder(BorderFactory.createRaisedBevelBorder());
desktopIcon.setBorder(null);
protected void installListeners() {
mouseInputListener = createMouseInputListener();
desktopIcon.addMouseMotionListener(mouseInputListener);
desktopIcon.addMouseListener(mouseInputListener);
norButton.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
deiconize();
public Dimension getMinimumSize(JComponent c) {
return iconPane.getMinimumSize();
public Dimension getMaximumSize(JComponent c){
return iconPane.getMaximumSize();
public Dimension getPreferredSize(JComponent c) {
JInternalFrame iframe = desktopIcon.getInternalFrame();
Border border = iframe.getBorder();
int w2 = 157;
int h2 = 18;
//if(border != null)
//h2 += border.getBorderInsets(iframe).bottom +
// border.getBorderInsets(iframe).top;
return new Dimension(w2, h2);
protected void uninstallComponents() {
desktopIcon.setLayout(null);
desktopIcon.remove(iconPane);
package KComponent;
import javax.swing.*;
import java.awt.*;
import Theme.*;
import javax.swing.plaf.metal.*;
public class KDesktop extends JDesktopPane {
ImageIcon icon;
boolean isWatermark;
JInternalFrame gb, proj, stat, cal;
boolean gbOpen, projOpen, statOpen, calOpen;
public KDesktop(boolean isWatermark) {
this.isWatermark = isWatermark;
icon = Theme.getBackground();
setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
public void setBackgroundImage(ImageIcon i) {
icon = i;
public ImageIcon getBackgroundImage() {
return icon;
public void paintComponent(Graphics g) {
super.paintComponent(g);
if (!isWatermark) {
if (getWidth() > icon.getIconWidth() || getHeight() > icon.getIconHeight()){
g.drawImage(icon.getImage(), 0,0, getWidth(), getHeight(), null);
else {
if (getProportionalHeight(getWidth()) < getHeight()) {
g.drawImage(icon.getImage(), 0, 0,
getProportionalWidth(getHeight()), getHeight(), null);
else
g.drawImage(icon.getImage(), 0,0,
getWidth(), getProportionalHeight(getWidth()), null);
else {
int w = icon.getIconWidth();
int h = icon.getIconHeight();
if (w == '\u0000' || h == '\u0000') {
super.paint(g);
else {
int currX = 0;
int currY = 0;
boolean keepPainting = true;
while (keepPainting) {
if (currX < (getWidth()+w/2)) {
g.drawImage(icon.getImage(), currX, currY, null);
currX += w;
else if (currY < (getHeight()+h/2)) {
currX = 0;
currY += h;
g.drawImage(icon.getImage(), currX, currY, null);
else keepPainting = false;
public int getProportionalHeight(int width) {
double percentage = (double)width/icon.getIconWidth();
return (int)(percentage*icon.getIconHeight());
public int getProportionalWidth(int height) {
double percentage = (double)height/icon.getIconHeight();
return (int)(percentage*icon.getIconWidth());
}Any ideas? I don't see how everything could work fine within the JBuilder environment and then screw up when I compile the code.
Thanks for any help.And this is how I call up the UI from my main function:
displayFrame.setUI(new MyInternalFrameUI(intFrame));Thanks! -
Passing data from a Table in a Dialog to a Listbox in a Internal Frame
Hi All,
Currently I have 2 .java classes.
In the first class, DisplayListBox.java, it would have listboxes in it and a textbox with a button, Find.
Upon clicking on the "Find" button, it would create a dialog window and call the second class, TableSelection.java.
Therefore now, the dialog window would contain a table with all the datas.
Just in case you guys would like to know, the dialog window was created in the DisplayListBox.java class and the internal frame was being created in another cls upon clicking the menu btn.
Upon selecting a cell in the table, i'd like to pass the value to the listbox in the internal frame, how can i go about doing it?
I've got the coding for getting the value of a selected cells. However, i'm unsure of how i can pass the value retrieved to the listbox in the internal frame.
Any help and advices are gladly appreciated! (:Thanks for your reply.
However, I am quite new to java so is it possible for you to explain in details of how i should go about going it?
To start off, could you tell me:
1. Where do I create the ListSelectionListener? In the DisplayListBox.java or TableSelection.java?
Sorry for the trouble but i just picked up java so I am pretty much unsure of all these stuff.
Thanks for your help! (: -
How do I only allow 1 internal frame to be added?
Could you pls show me how can I do this, I need some code to learn how this code work.
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Test1a extends JFrame
private JLabel label1;
// private JLabel label2;
private JLabel label3;
private JLabel label4;
private JLabel label5;
private JDesktopPane theDesktop;
public Test1a()
super("TESTING JLABEL");
setLayout(new BorderLayout(5, 5));
JMenuBar bar = new JMenuBar();
JMenu addMenu = new JMenu( "Add" );
JMenuItem newFrame = new JMenuItem( "Internal Frame" );
addMenu.add( newFrame );
bar.add( addMenu );
setJMenuBar( bar );
theDesktop = new JDesktopPane();
add( theDesktop, BorderLayout.CENTER );
newFrame.addActionListener(
new ActionListener()
// display new internal window
public void actionPerformed( ActionEvent event )
// create internal frame
JInternalFrame frame = new JInternalFrame("Internal Frame", true, true, true, true);
MyJPanel panel = new MyJPanel();
frame.add( panel, BorderLayout.CENTER );
frame.pack(); // set internal frame to size of contents
theDesktop.add( frame );
frame.setVisible( true );
label1= new JLabel ();
label1.setText("Label 1");
add(label1, BorderLayout.WEST);
// label2= new JLabel ("Label 2", SwingConstants.CENTER);
// add(label2, BorderLayout.CENTER);
label3= new JLabel ();
label3.setText("Label 3");
add(label3, BorderLayout.EAST);
label4= new JLabel ("Label 4", SwingConstants.CENTER);
add(label4, BorderLayout.NORTH);
label5= new JLabel ("Label 5", SwingConstants.CENTER);
add(label5, BorderLayout.SOUTH);
=============================================
import java.awt.*;
import javax.swing.*;
// class to display an ImageIcon on a panel
class MyJPanel extends JPanel
private ImageIcon imageIcon;
// load image
public MyJPanel()
imageIcon = new ImageIcon("yellowflowers.png");
// display imageIcon on panel
public void paintComponent( Graphics g )
super.paintComponent( g );
imageIcon.paintIcon( this, g, 0, 0 );
public Dimension getPreferredSize()
return new Dimension( imageIcon.getIconWidth(), imageIcon.getIconHeight() );
========================================
import javax.swing.*;
public class Test1b
public static void main (String args[])
Test1a test1a = new Test1a();
test1a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
test1a.setSize(800, 600);
test1a.setVisible(true);
}You where given an answer in your original posting:
http://forum.java.sun.com/thread.jspa?threadID=5146301
Maybe you are looking for
-
QUICBOOKS 2007 doesn't run under snow leopard
My register now says I have made deposits of $8, 456, 782.4301 AND they were made on 2/03/36. Intuit says "too bad so sad, we are going to release a patch for QB 2009 for MAC that MAY fix the problem, we won't support 2007" Bottom line, snow leopard
-
Not able to edit the records in the table
Hi Experts, I am not able to edit the records or delete the records from a database table. Those fields are not enabled. Edit icon is not at all there. Wat can i do. Cheers, Karthick
-
Can i password protect/parental lock albums in itunes?
i don't want to make all of my albums this way, but would like to 'lock' a handful of them to prevent my kids from inadvertantly playing them (the rated r type stuff)....is this possible?
-
No privacy settings to control incoming and outgoing calls
Is it possible to restrict incoming calls on the Droid Razr Maxx? With other Motorola phones (Droid X) it's easy to restrict incoming (and outgoing) calls to the address book only. .just can't find one.....thank you
-
Ability to see multiple previous pages by dropdown next to Back button seems to have gone
Since the recent update, I seem to have lost the little down arrow next to the Back button to enable me to jump to, say, 4 pages before the current one. Can I bring it back or has it disappeared for good? Thank you for any replies