BoxLayout: problems
I've a frame this default BorderLayout. Then I create this Panel:
JPanel rightPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));and insert it into east of the frame:
frame.add(rightPanel, BorderLayout.EAST);Then I create a BoxLayout like this:
JPanel boxPanel = new JPanel();
boxPanel.setLayout(new BoxLayout(boxPanel,BoxLayout.Y_AXIS));And then insert 2 labels, a JComboBox and a JList into in:
boxPanel.add(yearLabel);
boxPanel.add(yearBox);
boxPanel.add(raceLabel);
boxPanel.add(scrollRaceListPanel);Then I adds the boxPanel into the rightPanel like this:
rightPanel.add(boxPanel);Here you see the result of it:
http://www.demaweb.dk/frame.jpg
(notice the east-part)
As you see the labels are centered, and the ComboBox are getting the same width as the BoxPanel. I wan't the labels to have left align.
I hope somebody know why?
Well, I got another problem.
Here you see a example code:
import javax.swing.*;
import java.awt.*;
public class Main {
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
JPanel rightPanel = new JPanel(new BorderLayout());
JPanel rightCenterPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
//creating rightTop-panel
Box rightTopPanel = new Box(BoxLayout.Y_AXIS);
JLabel yearLabel = new JLabel("�r:");
yearLabel.setAlignmentX(rightTopPanel.LEFT_ALIGNMENT);
JComboBox yearBox = new JComboBox();
yearBox.setAlignmentX(rightTopPanel.LEFT_ALIGNMENT);
yearBox.setPreferredSize(new Dimension(100,20));
rightTopPanel.add(yearLabel);
rightTopPanel.add(yearBox);
//creating rightCenter-panel
JList raceList = new JList();
raceList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
JScrollPane scrollRaceList = new JScrollPane(raceList);
scrollRaceList.setPreferredSize(new Dimension(250,300));
JPanel scrollRaceListPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
scrollRaceListPanel.add(scrollRaceList);
rightCenterPanel.add(scrollRaceListPanel);
rightPanel.add(rightTopPanel, BorderLayout.NORTH);
rightPanel.add(rightCenterPanel, BorderLayout.CENTER);
frame.add(rightPanel, BorderLayout.EAST);
frame.pack();
frame.setVisible(true);
}As you see, the ComboBox are getting full width. Why?
Similar Messages
-
hello all,
BoxLayout Problem
could anyone give in simple language a explanation of 4 invincible components w.r.t box layout i.e. glue, struts, rigid area and fillers and what are the differences amongst the same.
primarily when to use what invincible component is my issue.
thanx in advance.Hi ;
first , check out this link
http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html#filler
and this link discribes how to use the BoxLayout and the fillers inside it :
http://java.sun.com/docs/books/tutorial/uiswing/layout/box.html
Adaya . -
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Test extends JFrame {
public Test()
JPanel p3 = new JPanel();
p3.setLayout(new BoxLayout(p3, BoxLayout.Y_AXIS));
p3.add(new JLabel("Fields:"));
for(int i = 0; i < 25; i++)
JTextField tempfield = new JTextField(3);
tempfield.setMaximumSize(new Dimension(80, 300));
p3.add(tempfield);
add(p3, BorderLayout.CENTER);
pack();
setVisible(true);
public static void main(String args[])
new Test();
}How do I get everything to align in the center? If I comment out the line "p3.add(new JLabel("Fields:"));" everything aligns in the center. Otherwise, only "Fields:" aligns in center and everything else that follows aligns left. Why is this and how do I fix?Read the section from the Swing tutorial on [How to Use Box Layout|http://download.oracle.com/javase/tutorial/uiswing/layout/box.html#alignment] which explains how the alignment of components work.
-
Advance level drawing problem with Jframe and JPanel need optimize sol?
Dear Experts,
I m trying to create a GUI for puzzle game following some kind of "game GUI template", but i have problems in that,so i tried to implement that in various ways after looking on internet and discussions about drawing gui in swing, but i have problem with both of these, may be i m doing some silly mistake, which is still out of my consideration. please have a look at these two and recommend me one of them, which is running without problems (flickring and when you enlarge window the board draw copies (tiled) everywhere,
Note: i don't want to inherit jpanel or Jframe
here is my code : import java.awt.BorderLayout;
public class GameMain extends JFrame {
private static final long serialVersionUID = 1L;
public int mX, mY;
int localpoints = 0;
protected static JTextField[][] squares;
protected JLabel statusLabel = new JLabel("jugno");
Label lbl_score = new Label("score");
Label lbl_scorelocal = new Label("local score");
protected static TTTService remoteTTTBoard;
// Define constants for the game
static final int CANVAS_WIDTH = 800; // width and height of the game screen
static final int CANVAS_HEIGHT = 600;
static final int UPDATE_RATE = 4; // number of game update per second
static State state; // current state of the game
private int mState;
// Handle for the custom drawing panel
private GameCanvas canvas;
// Constructor to initialize the UI components and game objects
public GameMain() {
// Initialize the game objects
gameInit();
// UI components
canvas = new GameCanvas();
canvas.setPreferredSize(new Dimension(CANVAS_WIDTH, CANVAS_HEIGHT));
this.setContentPane(canvas);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.pack();
this.setTitle("MY GAME");
this.setVisible(true);
public void gameInit() {
// Shutdown the game, clean up code that runs only once.
public void gameShutdown() {
// To start and re-start the game.
public void gameStart() {
private void gameLoop() {
public void keyPressed(KeyEvent e) {
public void keyTyped(KeyEvent e) {
public void gameKeyReleased(KeyEvent e) {
PuzzleBoard bd = getBoard();
for (int row = 0; row < 4; ++row) {
for (int col = 0; col < 4; ++col) {
if (e.getSource() == squares[row][col]) {
if (bd.isOpen(col, row)) {
lbl_score.setText("Highest Score = "
+ Integer.toString(bd.getPoints()));
setStatus1(bd);
pickSquare1(col, row, squares[row][col].getText()
.charAt(0));
protected void pickSquare1(int col, int row, char c) {
try {
remoteTTTBoard.pick(col, row, c);
} catch (RemoteException e) {
System.out.println("Exception: " + e.getMessage());
e.printStackTrace();
System.exit(1);
// method "called" by remote object to update the state of the game
public void updateBoard(PuzzleBoard new_board) throws RemoteException {
String s1;
for (int row = 0; row < 4; ++row) {
for (int col = 0; col < 4; ++col) {
squares[row][col].setText(new_board.ownerStr(col, row));
lbl_score.setText("Highest Score = "
+ Integer.toString(new_board.getPoints()));
setStatus1(new_board);
protected void setStatus1(PuzzleBoard bd) {
boolean locals = bd.getHave_winner();
System.out.println("local win" + locals);
if (locals == true) {
localpoints++;
System.out.println("in condition " + locals);
lbl_scorelocal.setText("Your Score = " + localpoints);
lbl_score
.setText("Highest Score = " + Integer.toString(bd.getPoints()));
protected PuzzleBoard getBoard() {
PuzzleBoard res = null;
try {
res = remoteTTTBoard.getState();
} catch (RemoteException e) {
System.out.println("Exception: " + e.getMessage());
e.printStackTrace();
System.exit(1);
return res;
/** Custom drawing panel (designed as an inner class). */
class GameCanvas extends JPanel implements KeyListener {
/** Custom drawing codes */
@Override
public void paintComponent(Graphics g) {
// setOpaque(false);
super.paintComponent(g);
// main box; everything placed in this
// JPanel box = new JPanel();
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
// add(statusLabel, BorderLayout.NORTH);
// set up the x's and o's
JPanel xs_and_os = new JPanel();
xs_and_os.setLayout(new GridLayout(5, 5, 0, 0));
squares = new JTextField[5][5];
for (int row = 0; row < 5; ++row) {
for (int col = 0; col < 5; ++col) {
squares[row][col] = new JTextField(1);
squares[row][col].addKeyListener(this);
if ((row == 0 && col == 1) || (row == 2 && col == 3)
|| (row == 1 && col == 4) || (row == 4 && col == 4)
|| (row == 4 && col == 0))
JPanel p = new JPanel(new BorderLayout());
JLabel label;
if (row == 0 && col == 1) {
label = new JLabel("1");
label.setHorizontalAlignment(JLabel.LEFT);
label.setVerticalAlignment(JLabel.TOP);
else if (row == 4 && col == 0) {// for two numbers or
// two
// blank box in on row
label = new JLabel("2");
label.setHorizontalAlignment(JLabel.LEFT);
label.setVerticalAlignment(JLabel.TOP);
else if (row == 1 && col == 4) {
label = new JLabel("3");
label.setHorizontalAlignment(JLabel.LEFT);
label.setVerticalAlignment(JLabel.TOP);
else if (row == 4) {
label = new JLabel("4");
label.setHorizontalAlignment(JLabel.LEFT);
label.setVerticalAlignment(JLabel.TOP);
else {
label = new JLabel("5");
label.setHorizontalAlignment(JLabel.LEFT);
label.setVerticalAlignment(JLabel.TOP);
label.setOpaque(true);
label.setBackground(squares[row][col].getBackground());
label.setPreferredSize(new Dimension(label
.getPreferredSize().width, squares[row][col]
.getPreferredSize().height));
p.setBorder(squares[row][col].getBorder());
squares[row][col].setBorder(null);
p.add(label, BorderLayout.WEST);
p.add(squares[row][col], BorderLayout.CENTER);
xs_and_os.add(p);
} else if ((row == 2 && col == 1) || (row == 1 && col == 2)
|| (row == 3 && col == 3) || (row == 0 && col == 3)) {
xs_and_os.add(squares[row][col]);
// board[ row ][ col ].setEditable(false);
// board[ row ][ col ].setText("");
squares[row][col].setBackground(Color.RED);
squares[row][col].addKeyListener(this);
} else {
squares[row][col] = new JTextField(1);
// squares[row][col].addActionListener(this);
squares[row][col].addKeyListener(this);
xs_and_os.add(squares[row][col]);
this.add(xs_and_os);
this.add(statusLabel);
this.add(lbl_score);
this.add(lbl_scorelocal);
public void keyPressed(KeyEvent e) {
public void keyReleased(KeyEvent e) {
gameKeyReleased(e);
public void keyTyped(KeyEvent e) {
// main
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new GameMain();
thanks a lot for your time , consideration and efforts.
jibby
Edited by: jibbylala on Sep 20, 2010 6:06 PMjibbylala wrote:
thanks for mentioning as i wasn't able to write complete context here.Yep thanks camickr. I think that Darryl's succinct reply applies here as well. -
Problem with writing and reading using serialization
I am having a problem with writing and reading an object that has another object in it. The purpose of the class is to write a order that has multiple items in it. And there will be several orders. This is for an IB project, where one of the requirements is to utilize a hierarchical composite data structure. That is, it is "one that contains more than one element and at least one of the elements is a composite data structure. Examples are, an array or linked list of records, a record that has one field that is another record, or an array". The code is shown below:
The error produced is
java.lang.NullPointerException
at SamsonRubberIndustries.CustomerOrderDetails.createCustOrdDetailsScreen(CustomerOrderDetails.java:150)
at SamsonRubberIndustries.CustomerOrderDetails$1.run(CustomerOrderDetails.java:78)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
public class CustOrdObject implements Serializable {
public int CustID;
public int CustOrderID;
public Object OrderDate;
public InnerCustOrdObject[] innerCustOrdObj;
public float GrandTotal;
public int MaxItems;
public CustOrdObject() {}
public CustOrdObject(InnerCustOrdObject[] innerCustOrdObj,
int CustID, int CustOrderID, Object OrderDate,
float GrandTotal, int innerarrlength, int innerarrpos, int MaxItems) {
this.CustID = CustID;
this.CustOrderID = CustOrderID;
this.OrderDate = OrderDate;
this.GrandTotal = GrandTotal;
this.MaxItems = MaxItems;
this.innerCustOrdObj = new InnerCustOrdObject[MaxItems];
public InnerCustOrdObject[] getInnerCustOrdObj() {
return innerCustOrdObj;
public void setInnerCustOrdObj(InnerCustOrdObject[] innerCustOrdObj) {
this.innerCustOrdObj = innerCustOrdObj;
public int getCustID() {
return CustID;
public void setCustID(int custID) {
CustID = custID;
public int getCustOrderID() {
return CustOrderID;
public void setCustOrderID(int custOrderID) {
CustOrderID = custOrderID;
public Object getOrderDate() {
return OrderDate;
public void setOrderDate(Object orderDate) {
OrderDate = orderDate;
public void setGrandTotal(float grandTotal) {
GrandTotal = grandTotal;
public float getGrandTotal() {
return GrandTotal;
public int getMaxItems() {
return MaxItems;
public void setMaxItems(int maxItems) {
MaxItems = maxItems;
public class InnerCustOrdObject implements Serializable{
public int ItemNumber;
public float UnitPrice;
public int QuantityRequired;
public float TotalPrice;
public InnerCustOrdObject() {}
public InnerCustOrdObject(int ItemNumber, float
UnitPrice, int QuantityRequired, float TotalPrice){
this.ItemNumber = ItemNumber;
this.UnitPrice = UnitPrice;
this.QuantityRequired = QuantityRequired;
this.TotalPrice = TotalPrice;
public int getItemNumber() {
return ItemNumber;
public void setItemNumber(int itemNumber) {
ItemNumber = itemNumber;
public int getQuantityRequired() {
return QuantityRequired;
public void setQuantityRequired(int quantityRequired) {
QuantityRequired = quantityRequired;
public float getTotalPrice() {
return TotalPrice;
public void setTotalPrice(float totalPrice) {
TotalPrice = totalPrice;
public float getUnitPrice() {
return UnitPrice;
public void setUnitPrice(float unitPrice) {
UnitPrice = unitPrice;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
public class CustomerOrderDetails extends CommonFeatures{
//TODO
private static int MAX_ORDERS = 200;
private static int MAX_ORDERITEMS = 100;
private static int MaxRecord;
private static int CurrentRecord = 1;
private static int currentItem;
private static int MaxItems;
private static boolean FileExists, recFileExists;
private static CustOrdObject[] orderDetails = new CustOrdObject[MAX_ORDERS];
private static InnerCustOrdObject[] innerCustOrdObj = new InnerCustOrdObject[MAX_ORDERITEMS];
private static File OrderDetailsFile = new File("CustOrdDetails.dat");
private static File OrdRecordNumStore = new File("OrdRecordNumStore.txt");
private static PrintWriter writeFile;
private static BufferedReader readFile;
private static ObjectOutputStream objOut;
private static ObjectInputStream objIn;
//Set format for date
SimpleDateFormat simpleDF = new SimpleDateFormat("dd MM yyyy");
//--<BEGINNING>--Declaring Interface Variables------------------------------------------//
private JPanel innertoppanel, innercenterpanel, innerbottompanel, innerrightpanel, innerleftpanel;
private JLabel CustIDLbl, CustOrderIDLbl, OrderedDateLbl, GrandTotLbl, ItemNumberLbl,UnitPriceLbl, QuantityReqLbl, TotPriceLbl;
private JTextField CustIDTxt, CustOrderIDTxt, OrderedDateTxt, GrandTotTxt, ItemNumberTxt, UnitPriceTxt, QuantityReqTxt, TotPriceTxt;
private JButton addrecordbtn, savebtn, externalprevbtn, externalnextbtn, internalprevbtn, internalnextbtn, gotorecordbtn, additemreqbtn;
//--<END>--Declaring Interface Variables------------------------------------------------//
public static void main(String[] args) {
final CustomerOrderDetails COD = new CustomerOrderDetails();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
COD.createCustOrdDetailsScreen();
} catch (Exception eb) {
eb.printStackTrace();
//--<BEGINNING>--Creating CustomerOrderDetails Screen---------------------------------------//
public JFrame createCustOrdDetailsScreen() {
createDefaultFrame();
mainframe.setSize(800,500);
createContainerPanel();
containerpanel.add(createCustOrdDetailsTitle(), BorderLayout.NORTH);
containerpanel.add(createCustOrdDetailsMainPanel(), BorderLayout.CENTER);
//containerpanel.add(createCustOrdDetailsLeftNavButtons(), BorderLayout.WEST);
//containerpanel.add(createCustOrdDetailsRightNavButtons(), BorderLayout.EAST);
containerpanel.add(createCustOrdDetailsButtons(), BorderLayout.SOUTH);
mainframe.setContentPane(containerpanel);
mainframe.setLocationRelativeTo(null);
mainframe.setVisible(true);
//--<BEGINNING>--Checks to see whether CRecordNumberStore file exists-------------------------------//
if (OrdRecordNumStore.exists() == true) {
recFileExists = true;
}else {
recFileExists = false;
if (recFileExists == true) {
MaxRecord = readRecordNumber();
CurrentRecord = MaxRecord;
//readOrder();
//readInnerOrderRecord(CurrentRecord);
System.out.println("Current Record " +CurrentRecord);
System.out.println("Max Record " +MaxRecord);
}else{
MaxRecord = 1;
writeRecordNumber(MaxRecord);
CustOrderIDTxt.setText(""+MaxRecord);
System.out.println("Current Record " +CurrentRecord);
System.out.println("Max Record " +MaxRecord);
//--<END>--Checks to see whether CRecordNumberStore file exists--------------------------------------//
if(readOrder() != null){
orderDetails = (CustOrdObject[]) readOrder();
innerCustOrdObj = orderDetails[CurrentRecord].getInnerCustOrdObj();
MaxItems = orderDetails[CurrentRecord].getMaxItems();
if(CurrentRecord > 1 && CurrentRecord < MaxRecord){
externalnextbtn.setEnabled(true);
externalprevbtn.setEnabled(true);
if(CurrentRecord >= MaxRecord){
externalnextbtn.setEnabled(false);
getFieldText(CurrentRecord-1);
}else{
orderDetails[CurrentRecord] = new CustOrdObject();
currentItem = 1;
return mainframe;
//--<END>--Creating CustomerOrderDetails Screen---------------------------------------------//
public JPanel createCustOrdDetailsTitle(){
createTitlePanel();
titlepanel.setBackground(TxtfontColor);
label.setText("- Customer Order Details -");
labelpanel.setBackground(TxtfontColor);
label.setForeground(Color.white);
createbuttonpanel();
buttonpanel.setBackground(TxtfontColor) ;
buttonpanel.add(createReturnToMainMenuButton());
titlepanel.add(labelpanel, BorderLayout.WEST);
titlepanel.add(buttonpanel, BorderLayout.EAST);
return titlepanel;
public JPanel createCustOrdDetailsMainPanel(){
createmainpanel();
mainpanel.setBackground(TxtfontColor);
mainpanel.setLayout(new BorderLayout());
mainpanel.setBorder(BorderFactory.createTitledBorder(""));
mainpanel.add(createInnerTopPanel(), BorderLayout.NORTH);
mainpanel.add(createInnerCenterPanel(), BorderLayout.CENTER);
mainpanel.add(createInnerBottomPanel(), BorderLayout.SOUTH);
mainpanel.add(createInnerRightPanel(), BorderLayout.EAST);
mainpanel.add(createInnerLeftPanel(), BorderLayout.WEST);
return mainpanel;
public JPanel createInnerTopPanel(){
innertoppanel = new JPanel(new GridBagLayout());
innertoppanel.setBackground(TxtfontColor);
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
//Setting Font Type and Size
Font font = new Font("Arial", Font.BOLD, 11);
CustIDLbl = new JLabel("Customer ID");
CustIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
CustIDLbl.setFont(font);
CustIDLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 1;
innertoppanel.add(CustIDLbl, GBC);
CustIDTxt = new JTextField(20);
CustIDTxt.setEditable(true);
GBC.gridx = 2;
GBC.gridy = 1;
innertoppanel.add(CustIDTxt, GBC);
GBC.gridx = 3;
GBC.gridy = 1;
innertoppanel.add(Box.createHorizontalStrut(220), GBC);
OrderedDateLbl = new JLabel("Order Date");
OrderedDateLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
OrderedDateLbl.setFont(font);
OrderedDateLbl.setForeground(LblfontColor);
GBC.gridx = 4;
GBC.gridy = 1;
innertoppanel.add(OrderedDateLbl, GBC);
//Get today's date
Date todaydate = new Date();
OrderedDateTxt = new JTextField(simpleDF.format(todaydate), 20);
OrderedDateTxt.setHorizontalAlignment(JTextField.CENTER);
OrderedDateTxt.setEditable(false);
GBC.gridx = 5;
GBC.gridy = 1;
innertoppanel.add(OrderedDateTxt, GBC);
CustOrderIDLbl = new JLabel("Customer Order ID");
CustOrderIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
CustOrderIDLbl.setFont(font);
CustOrderIDLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 2;
innertoppanel.add(CustOrderIDLbl, GBC);
CustOrderIDTxt = new JTextField(20);
CustOrderIDTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 2;
innertoppanel.add(CustOrderIDTxt, GBC);
return innertoppanel;
public JPanel createInnerCenterPanel(){
innercenterpanel = new JPanel(new GridBagLayout());
innercenterpanel.setBackground(TxtfontColor);
innercenterpanel.setBorder(BorderFactory.createLoweredBevelBorder());
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
//Setting Font Type and Size
Font font = new Font("Arial", Font.BOLD, 11);
ItemNumberLbl = new JLabel("Item Number");
ItemNumberLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
ItemNumberLbl.setFont(font);
ItemNumberLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 1;
innercenterpanel.add(ItemNumberLbl, GBC);
ItemNumberTxt = new JTextField(20);
GBC.gridx = 2;
GBC.gridy = 1;
innercenterpanel.add(ItemNumberTxt, GBC);
UnitPriceLbl = new JLabel("Unit Price");
UnitPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
UnitPriceLbl.setFont(font);
UnitPriceLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 2;
innercenterpanel.add(UnitPriceLbl, GBC);
UnitPriceTxt = new JTextField(20);
//UnitPriceTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 2;
innercenterpanel.add(UnitPriceTxt, GBC);
QuantityReqLbl = new JLabel("Quantity Required");
QuantityReqLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
QuantityReqLbl.setFont(font);
QuantityReqLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 3;
innercenterpanel.add(QuantityReqLbl, GBC);
QuantityReqTxt = new JTextField(20);
//QuantityReqTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 3;
innercenterpanel.add(QuantityReqTxt, GBC);
TotPriceLbl = new JLabel("Total Price");
TotPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
TotPriceLbl.setFont(font);
TotPriceLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 4;
innercenterpanel.add(TotPriceLbl, GBC);
TotPriceTxt = new JTextField(20);
//TotPriceTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 4;
innercenterpanel.add(TotPriceTxt, GBC);
return innercenterpanel;
public JPanel createInnerBottomPanel(){
innerbottompanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
innerbottompanel.setBackground(TxtfontColor);
//Setting Font Type and Size
Font font = new Font("Arial", Font.BOLD, 11);
GrandTotLbl = new JLabel("Grand Total");
GrandTotLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
GrandTotLbl.setFont(font);
GrandTotLbl.setForeground(LblfontColor);
innerbottompanel.add(GrandTotLbl);
innerbottompanel.add(Box.createHorizontalStrut(30));
GrandTotTxt = new JTextField(20);
innerbottompanel.add(GrandTotTxt);
return innerbottompanel;
public JPanel createInnerRightPanel(){
innerrightpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
innerrightpanel.setBackground(TxtfontColor);
innerrightpanel.setLayout(new BoxLayout(navrightpanel, BoxLayout.Y_AXIS));
innerrightpanel.setBorder(BorderFactory.createLoweredBevelBorder());
innerrightpanel.setLayout(new GridBagLayout());
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
internalnextbtn = new JButton(createNextButtonIcon());
GBC.gridx = 1;
GBC.gridy = 1;
internalnextbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
//getInnerFieldText(currentItem);
internalprevbtn.setEnabled(true);
if(currentItem < MaxItems){
++CurrentRecord;
//readOrder();
//readInnerOrderRecord(CurrentRecord);
setInnerFieldText(currentItem);
System.out.println(CurrentRecord);//Checking RECORD_NUM
if(currentItem == MaxItems){
internalnextbtn.setEnabled(false);
innerrightpanel.add(internalnextbtn, GBC);
return innerrightpanel;
public JPanel createInnerLeftPanel(){
innerleftpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
innerleftpanel.setBackground(TxtfontColor);
innerleftpanel.setBorder(BorderFactory.createLoweredBevelBorder());
innerleftpanel.setForeground(Color.BLACK);
innerleftpanel.setLayout(new GridBagLayout());
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
internalprevbtn = new JButton(createPreviousButtonIcon());
GBC.gridx = 1;
GBC.gridy = 1;
internalprevbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
//getInnerFieldText(currentItem);
internalnextbtn.setEnabled(true);
if(currentItem == 1){
internalprevbtn.setEnabled(false);
if(currentItem > 0){
--currentItem;
//readOrder();
setInnerFieldText(currentItem);
innerleftpanel.add(internalprevbtn, GBC);
return innerleftpanel;
public JPanel createCustOrdDetailsButtons(){
createbuttonpanel();
buttonpanel.setBackground(TxtfontColor);
externalprevbtn = new JButton(createPreviousButtonIcon());
externalprevbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
getFieldText(CurrentRecord);
externalnextbtn.setEnabled(true);
if(CurrentRecord == 1){
externalprevbtn.setEnabled(false);
if(CurrentRecord > 0){
--CurrentRecord;
setFieldText(CurrentRecord);
System.out.println(CurrentRecord);//Checking RECORD_NUM
buttonpanel.add(externalprevbtn);
addrecordbtn = new JButton("Add Record", createAddButtonIcon());
addrecordbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
try{
MaxRecord = readRecordNumber();
MaxRecord++;
writeRecordNumber(MaxRecord);
//--<BEGINNING>--Clear Fields-------------------------------------------------------//
CustIDTxt.setText("");
CustOrderIDTxt.setText(""+MaxRecord);
//Get today's date
Date todaydate = new Date();
OrderedDateTxt.setText(""+simpleDF.format(todaydate));
ItemNumberTxt.setText("");
UnitPriceTxt.setText("");
QuantityReqTxt.setText("");
TotPriceTxt.setText("");
GrandTotTxt.setText("");
//--<END>--Clear Fields-------------------------------------------------------------//
externalnextbtn.setEnabled(false);
externalprevbtn.setEnabled(true);
System.out.println(MaxRecord);
} catch(Exception ec){ec.printStackTrace();}
buttonpanel.add(addrecordbtn);
savebtn = new JButton("Save Data", createSaveButtonIcon());
savebtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
setFieldText(CurrentRecord);
writeOrder();
writeRecordNumber(MaxRecord);
System.out.println(CurrentRecord);
System.out.println(MaxRecord);
buttonpanel.add(savebtn);
java.net.URL imageURL_AddRowIcon = CommonFeatures.class.getResource("Icons/edit_add.png");
ImageIcon AddRowIcon = new ImageIcon(imageURL_AddRowIcon);
additemreqbtn = new JButton("Add Item", AddRowIcon);
additemreqbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
try{
//--<BEGINNING>--Clear Fields-------------------------------------------------------//
ItemNumberTxt.setText("");
UnitPriceTxt.setText("");
QuantityReqTxt.setText("");
TotPriceTxt.setText("");
//--<END>--Clear Fields-------------------------------------------------------------//
//CurrentRecord = MaxRecord;
currentItem++;
setInnerFieldText(currentItem);
internalnextbtn.setEnabled(false);
internalprevbtn.setEnabled(true);
System.out.println(MaxRecord);
} catch(Exception ec){ec.printStackTrace();}
buttonpanel.add(additemreqbtn);
externalnextbtn = new JButton(createNextButtonIcon());
externalnextbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
getFieldText(CurrentRecord);
externalprevbtn.setEnabled(true);
if(CurrentRecord < MaxRecord){
++CurrentRecord;
setFieldText(CurrentRecord);
System.out.println(CurrentRecord);//Checking RECORD_NUM
if(CurrentRecord == MaxRecord){
externalnextbtn.setEnabled(false);
buttonpanel.add(externalnextbtn);
return buttonpanel;
//TODO
public void setFieldText(int orderID){//TODO
orderDetails[orderID].setCustID(Integer.parseInt(CustIDTxt.getText()));
orderDetails[orderID].setCustOrderID(Integer.parseInt(CustOrderIDTxt.getText()));
orderDetails[orderID].setOrderDate(OrderedDateTxt.getText());
orderDetails[orderID].setInnerCustOrdObj(innerCustOrdObj);
orderDetails[orderID].setMaxItems(MaxItems);
setInnerFieldText(currentItem);
orderDetails[orderID].setGrandTotal(Float.parseFloat(GrandTotTxt.getText()));
public void setInnerFieldText(int currentItem){//TODO
innerCustOrdObj[currentItem] = new InnerCustOrdObject();
innerCustOrdObj[currentItem].setItemNumber(Integer.parseInt(ItemNumberTxt.getText()));
innerCustOrdObj[currentItem].setUnitPrice(Float.parseFloat(UnitPriceTxt.getText()));
innerCustOrdObj[currentItem].setQuantityRequired(Integer.parseInt(QuantityReqTxt.getText()));
innerCustOrdObj[currentItem].setTotalPrice(Float.parseFloat(TotPriceTxt.getText()));
public void getFieldText(int orderID){
CustIDTxt.setText(Integer.toString(orderDetails[orderID].getCustID()));
CustOrderIDTxt.setText(Integer.toString(orderDetails[orderID].getCustOrderID()));
OrderedDateTxt.setText(""+orderDetails[orderID].getOrderDate());
currentItem = orderDetails[orderID].getMaxItems();
System.err.println("currentItem" + currentItem);
getInnerFieldText(currentItem);
GrandTotTxt.setText(Float.toString(orderDetails[orderID].getGrandTotal()));
public void getInnerFieldText(int currentItem){
ItemNumberTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getItemNumber()));
UnitPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getUnitPrice()));
QuantityReqTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getQuantityRequired()));
TotPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getTotalPrice()));
public void writeOrder(){//TODO
try {
objOut = new ObjectOutputStream(new FileOutputStream(OrderDetailsFile));
objOut.writeObject(orderDetails);
System.out.println("WORKING!");
objOut.flush();
objOut.close();
} catch (IOException e) {
e.printStackTrace();
public Object readOrder(){
Object temporaryObj;
try{
objIn = new ObjectInputStream(new FileInputStream(OrderDetailsFile));
temporaryObj = objIn.readObject();
CustOrdObject[] blah = (CustOrdObject[]) temporaryObj;
System.out.println("Outer: "+blah[1].getCustID());
InnerCustOrdObject[] whee = blah[1].getInnerCustOrdObj();
System.out.println("Inner: "+whee[1].getItemNumber());
objIn.close();
System.out.println("Read Worky!");
return temporaryObj;
}catch(Exception e){
e.printStackTrace();
System.out.println("Read No Worky!");
return null;
public void writeRecordNumber(int MaxRecord){
try{
objOut = new ObjectOutputStream(new FileOutputStream(OrdRecordNumStore));
objOut.writeObject(MaxRecord);
System.out.println("WORKING!");
objOut.flush();
objOut.close();
}catch(Exception e){e.printStackTrace();}
public int readRecordNumber() {
try {
objIn = new ObjectInputStream(new FileInputStream(OrdRecordNumStore));
int temporaryObj = Integer.parseInt(objIn.readObject().toString());
objIn.close();
System.out.println("Read Number Worky!");
return temporaryObj;
} catch (Exception e) {
e.printStackTrace();
System.out.println("Read Number No Worky!");
return -1;
}Message was edited by:
Kilik07
Message was edited by:
Kilik07ok i got reading to work to a certain extent... but the prob is i cnt seem to save my innerCustOrdObj proprly...when ever i look for a record using the gotorecordbtn, the outerobject, which is the orderDetails, seems to change but the innerCustOrdObj remains the same... heres the new code..
public class CustomerOrderDetails extends CommonFeatures{
//TODO
private static int MAX_ORDERS = 200;
private static int MAX_ORDERITEMS = 100;
private static int MaxRecord;
private static int CurrentRecord = 1;
private static int currentItem;
private static int MaxItems = 1;
private static boolean FileExists, recFileExists;
private static boolean RecordExists;
private static CustOrdObject[] orderDetails = new CustOrdObject[MAX_ORDERS];
private static InnerCustOrdObject[] innerCustOrdObj = new InnerCustOrdObject[MAX_ORDERITEMS];
private static File OrderDetailsFile = new File("CustOrdDetails.ser");
private static File OrdRecordNumStore = new File("OrdRecordNumStore.txt");
private static PrintWriter writeFile;
private static BufferedReader readFile;
private static ObjectOutputStream objOut;
private static ObjectInputStream objIn;
//Set format for date
SimpleDateFormat simpleDF = new SimpleDateFormat("dd MM yyyy");
//--<BEGINNING>--Declaring Interface Variables------------------------------------------//
private JPanel innertoppanel, innercenterpanel, innerbottompanel, innerrightpanel, innerleftpanel;
private JLabel CustIDLbl, CustOrderIDLbl, OrderedDateLbl, GrandTotLbl, ItemNumberLbl,UnitPriceLbl, QuantityReqLbl, TotPriceLbl;
private JTextField CustIDTxt, CustOrderIDTxt, OrderedDateTxt, GrandTotTxt, ItemNumberTxt, UnitPriceTxt, QuantityReqTxt, TotPriceTxt;
private JButton addrecordbtn, savebtn, externalprevbtn, externalnextbtn, internalprevbtn, internalnextbtn, gotorecordbtn, additemreqbtn;
//--<END>--Declaring Interface Variables------------------------------------------------//
public static void main(String[] args) {
final CustomerOrderDetails COD = new CustomerOrderDetails();
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
COD.createCustOrdDetailsScreen();
} catch (Exception eb) {
eb.printStackTrace();
//--<BEGINNING>--Creating CustomerOrderDetails Screen---------------------------------------//
public JFrame createCustOrdDetailsScreen() {
createDefaultFrame();
mainframe.setSize(800,500);
createContainerPanel();
containerpanel.add(createCustOrdDetailsTitle(), BorderLayout.NORTH);
containerpanel.add(createCustOrdDetailsMainPanel(), BorderLayout.CENTER);
//containerpanel.add(createCustOrdDetailsLeftNavButtons(), BorderLayout.WEST);
//containerpanel.add(createCustOrdDetailsRightNavButtons(), BorderLayout.EAST);
containerpanel.add(createCustOrdDetailsButtons(), BorderLayout.SOUTH);
mainframe.setContentPane(containerpanel);
mainframe.setLocationRelativeTo(null);
mainframe.setVisible(true);
//--<BEGINNING>--Checks to see whether CRecordNumberStore file exists-------------------------------//
if (OrdRecordNumStore.exists() == true) {
recFileExists = true;
}else {
recFileExists = false;
if (recFileExists == true) {
MaxRecord = readRecordNumber();
CurrentRecord = MaxRecord;
//readOrder();
//readInnerOrderRecord(CurrentRecord);
System.out.println("Current Record " +CurrentRecord);
System.out.println("Max Record " +MaxRecord);
}else{
MaxRecord = 1;
writeRecordNumber(MaxRecord);
CustOrderIDTxt.setText(""+MaxRecord);
System.out.println("Current Record " +CurrentRecord);
System.out.println("Max Record " +MaxRecord);
//--<END>--Checks to see whether CRecordNumberStore file exists--------------------------------------//
if(readOrder() != null){
orderDetails = (CustOrdObject[]) readOrder();
//CurrentRecord--;
//System.out.println("Current Rec Here"+CurrentRecord);
if(orderDetails[CurrentRecord] == null){
System.err.println("CustomerOrderObj 1 is null !!");
}else{
System.err.println("CustomerOrderObj 1 is not null !!");
if(orderDetails[CurrentRecord].getInnerCustOrdObj() == null){
System.err.println("InnerCustomerOrderObj is null !!");
}else{
System.err.println("InnerCustomerOrderObj is not null !!");
innerCustOrdObj = orderDetails[CurrentRecord].getInnerCustOrdObj();
MaxItems = orderDetails[CurrentRecord].getMaxItems();
if(CurrentRecord > 1 && CurrentRecord < MaxRecord){
externalnextbtn.setEnabled(true);
externalprevbtn.setEnabled(true);
if(CurrentRecord >= MaxRecord){
externalnextbtn.setEnabled(false);
getFieldText(CurrentRecord);
getInnerFieldText(MaxItems);
}else{
orderDetails[CurrentRecord] = new CustOrdObject();
currentItem = 1;
return mainframe;
//--<END>--Creating CustomerOrderDetails Screen---------------------------------------------//
public JPanel createCustOrdDetailsTitle(){
createTitlePanel();
titlepanel.setBackground(TxtfontColor);
label.setText("- Customer Order Details -");
labelpanel.setBackground(TxtfontColor);
label.setForeground(Color.white);
createbuttonpanel();
buttonpanel.setBackground(TxtfontColor) ;
buttonpanel.add(createReturnToMainMenuButton());
titlepanel.add(labelpanel, BorderLayout.WEST);
titlepanel.add(buttonpanel, BorderLayout.EAST);
return titlepanel;
public JPanel createCustOrdDetailsMainPanel(){
createmainpanel();
mainpanel.setBackground(TxtfontColor);
mainpanel.setLayout(new BorderLayout());
mainpanel.setBorder(BorderFactory.createTitledBorder(""));
mainpanel.add(createInnerTopPanel(), BorderLayout.NORTH);
mainpanel.add(createInnerCenterPanel(), BorderLayout.CENTER);
mainpanel.add(createInnerBottomPanel(), BorderLayout.SOUTH);
mainpanel.add(createInnerRightPanel(), BorderLayout.EAST);
mainpanel.add(createInnerLeftPanel(), BorderLayout.WEST);
return mainpanel;
public JPanel createInnerTopPanel(){
innertoppanel = new JPanel(new GridBagLayout());
innertoppanel.setBackground(TxtfontColor);
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
//Setting Font Type and Size
Font font = new Font("Arial", Font.BOLD, 11);
CustIDLbl = new JLabel("Customer ID");
CustIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
CustIDLbl.setFont(font);
CustIDLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 1;
innertoppanel.add(CustIDLbl, GBC);
CustIDTxt = new JTextField(20);
CustIDTxt.setEditable(true);
GBC.gridx = 2;
GBC.gridy = 1;
innertoppanel.add(CustIDTxt, GBC);
GBC.gridx = 3;
GBC.gridy = 1;
innertoppanel.add(Box.createHorizontalStrut(220), GBC);
OrderedDateLbl = new JLabel("Order Date");
OrderedDateLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
OrderedDateLbl.setFont(font);
OrderedDateLbl.setForeground(LblfontColor);
GBC.gridx = 4;
GBC.gridy = 1;
innertoppanel.add(OrderedDateLbl, GBC);
//Get today's date
Date todaydate = new Date();
OrderedDateTxt = new JTextField(simpleDF.format(todaydate), 20);
OrderedDateTxt.setHorizontalAlignment(JTextField.CENTER);
OrderedDateTxt.setEditable(false);
GBC.gridx = 5;
GBC.gridy = 1;
innertoppanel.add(OrderedDateTxt, GBC);
CustOrderIDLbl = new JLabel("Customer Order ID");
CustOrderIDLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
CustOrderIDLbl.setFont(font);
CustOrderIDLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 2;
innertoppanel.add(CustOrderIDLbl, GBC);
CustOrderIDTxt = new JTextField(20);
//CustOrderIDTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 2;
innertoppanel.add(CustOrderIDTxt, GBC);
return innertoppanel;
public JPanel createInnerCenterPanel(){
innercenterpanel = new JPanel(new GridBagLayout());
innercenterpanel.setBackground(TxtfontColor);
innercenterpanel.setBorder(BorderFactory.createLoweredBevelBorder());
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
//Setting Font Type and Size
Font font = new Font("Arial", Font.BOLD, 11);
ItemNumberLbl = new JLabel("Item Number");
ItemNumberLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
ItemNumberLbl.setFont(font);
ItemNumberLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 1;
innercenterpanel.add(ItemNumberLbl, GBC);
ItemNumberTxt = new JTextField(20);
GBC.gridx = 2;
GBC.gridy = 1;
innercenterpanel.add(ItemNumberTxt, GBC);
UnitPriceLbl = new JLabel("Unit Price");
UnitPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
UnitPriceLbl.setFont(font);
UnitPriceLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 2;
innercenterpanel.add(UnitPriceLbl, GBC);
UnitPriceTxt = new JTextField(20);
//UnitPriceTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 2;
innercenterpanel.add(UnitPriceTxt, GBC);
QuantityReqLbl = new JLabel("Quantity Required");
QuantityReqLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
QuantityReqLbl.setFont(font);
QuantityReqLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 3;
innercenterpanel.add(QuantityReqLbl, GBC);
QuantityReqTxt = new JTextField(20);
//QuantityReqTxt.setEditable(false);
GBC.gridx = 2;
GBC.gridy = 3;
innercenterpanel.add(QuantityReqTxt, GBC);
TotPriceLbl = new JLabel("Total Price");
TotPriceLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
TotPriceLbl.setFont(font);
TotPriceLbl.setForeground(LblfontColor);
GBC.gridx = 1;
GBC.gridy = 4;
innercenterpanel.add(TotPriceLbl, GBC);
TotPriceTxt = new JTextField(20);
TotPriceTxt.setEditable(false);
TotPriceTxt.addFocusListener(new FocusAdapter(){
public void focusGained(FocusEvent evt){
TotPriceTxt.setText(""+Integer.parseInt(UnitPriceTxt.getText())*Integer.parseInt(QuantityReqTxt.getText()));
GBC.gridx = 2;
GBC.gridy = 4;
innercenterpanel.add(TotPriceTxt, GBC);
return innercenterpanel;
public JPanel createInnerBottomPanel(){
innerbottompanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
innerbottompanel.setBackground(TxtfontColor);
//Setting Font Type and Size
Font font = new Font("Arial", Font.BOLD, 11);
GrandTotLbl = new JLabel("Grand Total");
GrandTotLbl.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
GrandTotLbl.setFont(font);
GrandTotLbl.setForeground(LblfontColor);
innerbottompanel.add(GrandTotLbl);
innerbottompanel.add(Box.createHorizontalStrut(30));
GrandTotTxt = new JTextField(20);
innerbottompanel.add(GrandTotTxt);
return innerbottompanel;
public JPanel createInnerRightPanel(){
innerrightpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
innerrightpanel.setBackground(TxtfontColor);
innerrightpanel.setLayout(new BoxLayout(navrightpanel, BoxLayout.Y_AXIS));
innerrightpanel.setBorder(BorderFactory.createLoweredBevelBorder());
innerrightpanel.setLayout(new GridBagLayout());
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
internalnextbtn = new JButton(createNextButtonIcon());
GBC.gridx = 1;
GBC.gridy = 1;
internalnextbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
getInnerFieldText(currentItem);
internalprevbtn.setEnabled(true);
if(currentItem < MaxItems){
++currentItem;
orderDetails[CurrentRecord].getInnerCustOrdObj();
setInnerFieldText(currentItem);
System.out.println("Current Item" + currentItem);
if(currentItem == MaxItems){
internalnextbtn.setEnabled(false);
innerrightpanel.add(internalnextbtn, GBC);
return innerrightpanel;
public JPanel createInnerLeftPanel(){
innerleftpanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
innerleftpanel.setBackground(TxtfontColor);
innerleftpanel.setBorder(BorderFactory.createLoweredBevelBorder());
innerleftpanel.setForeground(Color.BLACK);
innerleftpanel.setLayout(new GridBagLayout());
GridBagConstraints GBC = new GridBagConstraints();
GBC.fill = GridBagConstraints.HORIZONTAL;
internalprevbtn = new JButton(createPreviousButtonIcon());
GBC.gridx = 1;
GBC.gridy = 1;
internalprevbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
getInnerFieldText(currentItem);
internalnextbtn.setEnabled(true);
if(currentItem == 1){
internalprevbtn.setEnabled(false);
if(currentItem > 0){
--currentItem;
orderDetails[CurrentRecord].getInnerCustOrdObj();
setInnerFieldText(currentItem);
System.out.println("Current Item" + currentItem);
innerleftpanel.add(internalprevbtn, GBC);
return innerleftpanel;
public JPanel createCustOrdDetailsButtons(){
createbuttonpanel();
buttonpanel.setBackground(TxtfontColor);
externalprevbtn = new JButton(createPreviousButtonIcon());
externalprevbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
getFieldText(CurrentRecord);
externalnextbtn.setEnabled(true);
if(CurrentRecord == 1){
externalprevbtn.setEnabled(false);
if(CurrentRecord > 0){
--CurrentRecord;
setFieldText(CurrentRecord);
System.out.println("Current Record " + CurrentRecord);//Checking RECORD_NUM
buttonpanel.add(externalprevbtn);
addrecordbtn = new JButton("Add Record", createAddButtonIcon());
addrecordbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
try{
MaxRecord = readRecordNumber();
MaxRecord++;
CurrentRecord = MaxRecord;
orderDetails[CurrentRecord] = new CustOrdObject();
writeRecordNumber(MaxRecord);
MaxItems = 1;
innerCustOrdObj[MaxItems] = new InnerCustOrdObject();
//--<BEGINNING>--Clear Fields-------------------------------------------------------//
CustIDTxt.setText("");
CustOrderIDTxt.setText(""+MaxRecord);
//Get today's date
Date todaydate = new Date();
OrderedDateTxt.setText(""+simpleDF.format(todaydate));
ItemNumberTxt.setText("");
UnitPriceTxt.setText("");
QuantityReqTxt.setText("");
TotPriceTxt.setText("");
GrandTotTxt.setText("");
//--<END>--Clear Fields-------------------------------------------------------------//
externalnextbtn.setEnabled(false);
externalprevbtn.setEnabled(true);
System.out.println(MaxRecord);
} catch(Exception ec){ec.printStackTrace();}
buttonpanel.add(addrecordbtn);
savebtn = new JButton("Save Data", createSaveButtonIcon());
savebtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
setFieldText(CurrentRecord);
setInnerFieldText(MaxItems);
writeOrder();
writeRecordNumber(MaxRecord);
System.out.println(CurrentRecord);
System.out.println(MaxRecord);
buttonpanel.add(savebtn);
java.net.URL imageURL_AddRowIcon = CommonFeatures.class.getResource("Icons/edit_add.png");
ImageIcon AddRowIcon = new ImageIcon(imageURL_AddRowIcon);
additemreqbtn = new JButton("Add Item", AddRowIcon);
additemreqbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
try{
//--<BEGINNING>--Clear Fields-------------------------------------------------------//
ItemNumberTxt.setText("");
UnitPriceTxt.setText("");
QuantityReqTxt.setText("");
TotPriceTxt.setText("");
//--<END>--Clear Fields-------------------------------------------------------------//
//CurrentRecord = MaxRecord;
MaxItems++;
innerCustOrdObj[MaxItems] = new InnerCustOrdObject();
System.out.println("Max Items "+MaxItems);
currentItem = MaxItems;
orderDetails[CurrentRecord].setMaxItems(MaxItems);
///setInnerFieldText(currentItem);
internalnextbtn.setEnabled(false);
internalprevbtn.setEnabled(true);
} catch(Exception ec){ec.printStackTrace();}
buttonpanel.add(additemreqbtn);
externalnextbtn = new JButton(createNextButtonIcon());
externalnextbtn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
getFieldText(CurrentRecord);
externalprevbtn.setEnabled(true);
if(CurrentRecord < MaxRecord){
++CurrentRecord;
setFieldText(CurrentRecord);
System.out.println(CurrentRecord);//Checking RECORD_NUM
if(CurrentRecord == MaxRecord){
externalnextbtn.setEnabled(false);
buttonpanel.add(externalnextbtn);
gotorecordbtn = new JButton("Go To Record", createGotoButtonIcon());
gotorecordbtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt){
* The text from the GotorecordTxt textfield will be taken and assigned
* to a temporary integer variable called Find.
int Find = Integer.parseInt(CustOrderIDTxt.getText());
for(int j=1; j <= MaxRecord; j++){
* Using a for loop, each record can be read using the readCustRecord
* method.
getFieldText(j);
* An if condition is utilized to check whether the temporary stored variable, Find,
* matches a field in a record. If this record is found, then using the RecordExists
* which was declared at the top, either a true or false statement can be assigned
* If the record exists, then a true statement will be assigned, if not a false
* statement will be assigned.
if(orderDetails[j].getCustOrderID() == Find){
RecordExists = true;
break;
}else{
RecordExists = false;
if(RecordExists == false){
* If the RecordExists is assigned a false statement, then a message will be
* displayed to show that the record does not exist.
JOptionPane.showMessageDialog(null, "Record Does Not Exist!", "Error Message", JOptionPane.ERROR_MESSAGE, createErrorIcon());
}else{
getFieldText(Find);
buttonpanel.add(gotorecordbtn);
return buttonpanel;
//TODO
public void setFieldText(int orderID){//TODO
orderDetails[orderID].setCustID(Integer.parseInt(CustIDTxt.getText()));
orderDetails[orderID].setCustOrderID(Integer.parseInt(CustOrderIDTxt.getText()));
orderDetails[orderID].setOrderDate(OrderedDateTxt.getText());
orderDetails[orderID].setInnerCustOrdObj(innerCustOrdObj);
orderDetails[orderID].setMaxItems(MaxItems);
setInnerFieldText(currentItem);
orderDetails[orderID].setGrandTotal(Float.parseFloat(GrandTotTxt.getText()));
public void setInnerFieldText(int currentItem){//TODO
innerCustOrdObj[currentItem] = new InnerCustOrdObject();
innerCustOrdObj[currentItem].setMaxItems(MaxItems);
innerCustOrdObj[currentItem].setItemNumber(Integer.parseInt(ItemNumberTxt.getText()));
innerCustOrdObj[currentItem].setUnitPrice(Float.parseFloat(UnitPriceTxt.getText()));
innerCustOrdObj[currentItem].setQuantityRequired(Integer.parseInt(QuantityReqTxt.getText()));
innerCustOrdObj[currentItem].setTotalPrice(Float.parseFloat(TotPriceTxt.getText()));
public void getFieldText(int orderID){
CustIDTxt.setText(Integer.toString(orderDetails[orderID].getCustID()));
CustOrderIDTxt.setText(Integer.toString(orderDetails[orderID].getCustOrderID()));
OrderedDateTxt.setText(""+orderDetails[orderID].getOrderDate());
currentItem = orderDetails[orderID].getMaxItems();
orderDetails[orderID].getInnerCustOrdObj();
System.err.println("currentItem" + currentItem);
//getInnerFieldText(currentItem);
GrandTotTxt.setText(Float.toString(orderDetails[orderID].getGrandTotal()));
public void getInnerFieldText(int currentItem){
ItemNumberTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getItemNumber()));
UnitPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getUnitPrice()));
QuantityReqTxt.setText(Integer.toString(innerCustOrdObj[currentItem].getQuantityRequired()));
TotPriceTxt.setText(Float.toString(innerCustOrdObj[currentItem].getTotalPrice()));
public void writeOrder(){//TODO
try {
objOut = new ObjectOutputStream(new FileOutputStream(OrderDetailsFile));
objOut.writeObject(orderDetails);
System.out.println("WORKING!");
objOut.flush();
objOut.close();
} catch (IOException e) {
e.printStackTrace();
public Object readOrder(){
Object temporaryObj;
try{
objIn = new ObjectInputStream(new FileInputStream(OrderDetailsFile));
temporaryObj = objIn.readObject();
CustOrdObject[] blah = (CustOrdObject[]) temporaryObj;
/* System.out.println("Outer: "+blah[1].getCustID());
InnerCustOrdObject[] whee = blah[1].getInnerCustOrdObj();
System.out.println("Inner: "+whee[1].getItemNumber());*/
objIn.close();
System.out.println("Read Worky!");
return temporaryObj;
}catch(Exception e){
e.printStackTrace();
System.out.println("Read No Worky!");
return null;
public void writeRecordNumber(int MaxRecord){
try{
objOut = new ObjectOutputStream(new FileOutputStream(OrdRecordNumStore));
objOut.writeObject(MaxRecord);
System.out.println("WORKING!");
objOut.flush();
objOut.close();
}catch(Exception e){e.printStackTrace();}
public int readRecordNumber() {
try {
objIn = new ObjectInputStream(new FileInputStream(OrdRecordNumStore));
int temporaryObj = Integer.parseInt(objIn.readObject().toString());
objIn.close();
System.out.println("Read Number Worky!");
return temporaryObj;
} catch (Exception e) {
e.printStackTrace();
System.out.println("Read Number No Worky!");
return -1;
}Message was edited by:
Kilik07 -
Hi I want to add a view port to a JPanel
the main problem is that the Jpanel change size as the frame.
how can i make it independent from the frame so having it; own w, h
thanks
package help;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.*;
public abstract class MyFrame extends JFrame {
private static final long serialVersionUID = 1L;
private static JButton drawCircle, drawRectangle, drawSquare, drawStar, start, clear,quit,back, screenshoot;
static final int FPS_MIN = 0;
static final int FPS_MAX = 150;
static final int FPS_INIT = 0;
static int fps;
double x1,x2;
double y1,y2;
int dr =1;
int dy= 1;
int Selection=0;
boolean click=true; //check if start has been clicked
int width = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width; // screen width
int height = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height; //screen higth
protected static int count;
int R,G,B; //color
Cursor c; //cursor object
private static ShapePanel bpnl;
public MyFrame()
R=G=B=0;
int width = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
int height = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height-100;
JFrame frame=new JFrame();
BorderLayout layout=new BorderLayout();
frame.setLayout(layout);
frame.setTitle("Game");
//panel to hold buttons
JPanel upPanel = new JPanel();
upPanel.setLayout(new FlowLayout());
upPanel.setSize(width, height/5);
//panel to hold SLIDERS
JPanel leftPanel = new JPanel();
leftPanel.setLayout(new BoxLayout(leftPanel, BoxLayout.Y_AXIS));
leftPanel.setSize(50, height);
//initialize buttons and add to the upPanel
drawCircle=new JButton("Draw Circle");
upPanel.add(drawCircle);
drawStar=new JButton("Draw Star");
upPanel.add(drawStar);
drawRectangle=new JButton("Draw Rectangle");
upPanel.add(drawRectangle);
drawSquare=new JButton("Draw Square");
upPanel.add(drawSquare);
start=new JButton("Start");
start.setBackground(Color.GREEN);
//upPanel.add(start);
clear=new JButton("Clear");
upPanel.add(clear);
back=new JButton("Back");
upPanel.add(back);
quit=new JButton("Quit");
quit.setBackground(Color.red);
upPanel.add(quit);
screenshoot=new JButton("ScreenShoot");
c = new Cursor (Cursor.CROSSHAIR_CURSOR); //Change cursor to cross hair
this.setCursor (c);
//new object spanel to hold TIMER
JPanel spanel=new JPanel();
spanel.setLayout(new GridLayout());
//slider dimension construction
JSlider sDimension = new JSlider(JSlider.HORIZONTAL,FPS_MIN, FPS_MAX, FPS_INIT);
sDimension.setMajorTickSpacing(30);
sDimension.setMinorTickSpacing(3);
sDimension.setPaintTicks(true);
sDimension.setPaintLabels(true);
Font font = new Font("Serif", Font.ITALIC, 15);
sDimension.setFont(font);
sDimension.setBorder(BorderFactory.createTitledBorder("Shape Dimension"));
//slider speed construction
int FPS_MIN_s = 0;
int FPS_MAX_s = 60;
int FPS_INIT_s = 0; //initial frames per second
JSlider sSpeed = new JSlider(JSlider.HORIZONTAL,FPS_MIN_s, FPS_MAX_s, FPS_INIT_s);
sSpeed.setBorder(BorderFactory.createTitledBorder("Shape Speed"));
////////////////////////// // slider colors////////////////////////////////////////////////////
int FPS_MIN_C = 0;
int FPS_MAX_C = 250;
int FPS_INIT_C = 0;
JSlider sliderR= new JSlider(JSlider.HORIZONTAL,FPS_MIN_C, FPS_MAX_C, FPS_INIT_C);
sliderR.setBorder(BorderFactory.createTitledBorder("Red Channel"));
JSlider sliderG= new JSlider(JSlider.HORIZONTAL,FPS_MIN_C, FPS_MAX_C, FPS_INIT_C);
sliderG.setMajorTickSpacing(50);
sliderG.setMinorTickSpacing(25);
sliderG.setPaintTicks(true);
sliderG.setPaintLabels(true);
sliderG.setFont(font);
sliderG.setBorder(BorderFactory.createTitledBorder("Green Channel"));
JSlider sliderB= new JSlider(JSlider.HORIZONTAL,FPS_MIN_C, FPS_MAX_C, FPS_INIT_C);
sliderB.setBorder(BorderFactory.createTitledBorder("Blue Channel"));
// spanel.add(sSpeed,BorderLayout.EAST);
frame.add(upPanel,BorderLayout.NORTH);
frame.add(leftPanel,BorderLayout.WEST);
bpnl = new ShapePanel(3000,3000);
System.out.println("panel width = "+bpnl.getWidth() +" heigth = " + bpnl.getHeight());
bpnl.setFocusable(true);
upPanel.setBackground(Color.DARK_GRAY);
upPanel.setBorder(BorderFactory.createLineBorder(Color.white));
frame.add(spanel,BorderLayout.SOUTH);
frame.add(bpnl, BorderLayout.CENTER);
frame.setSize(width, height);
frame.setVisible(true);
leftPanel.add(sliderR);
leftPanel.add(sliderB);
leftPanel.add(sliderG);
leftPanel.add(sDimension,BorderLayout.WEST);
System.out.println("panel width = "+bpnl.getWidth() +" heigth = " + bpnl.getHeight());
public static int getPanelWidth()
System.out.println("panel width "+bpnl.getWidth());
return bpnl.getWidth();
public static int getPanelHeigth()
System.out.println("Panel heigth " +bpnl.getHeight());
return bpnl.getHeight();
public static void main(String args[])
new MyFrame() {};
package help;
import java.awt.Cursor;
import java.awt.Graphics;
import javax.swing.JPanel;
class ShapePanel extends JPanel {
private static final long serialVersionUID = 1L;
private javax.swing.Timer animationTmr;
private float heigth;
private float width;
private Cursor c;
public ShapePanel(int w, int h) {
int W=w;
int H=h;
c = new Cursor (Cursor.CROSSHAIR_CURSOR); //Change cursor to cross hair
this.setCursor (c);
this.setPreferredSize(3000,3000);
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
private void setPreferredSize(int i, int i0) {
thankssorry i hope this is better
package help;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public abstract class MyFrame extends JFrame {
private static final long serialVersionUID = 1L;
int dr =1;
int dy= 1;
int Selection=0;
int width = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width; // screen width
int height = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height-100; //screen higth
private static ShapePanel bpnl;
public MyFrame()
JFrame frame=new JFrame();
BorderLayout layout=new BorderLayout();
frame.setLayout(layout);
bpnl = new ShapePanel(3000,3000);
System.out.println("panel width = "+bpnl.getWidth() +" heigth = " + bpnl.getHeight());
bpnl.setFocusable(true);
frame.add(bpnl);
frame.setSize(width, height);
pack();
frame.setVisible(true);
System.out.println("panel width = "+bpnl.getWidth() +" heigth = " + bpnl.getHeight());
public static int getPanelWidth()
System.out.println("panel width "+bpnl.getWidth());
return bpnl.getWidth();
public static int getPanelHeigth()
System.out.println("Panel heigth " +bpnl.getHeight());
return bpnl.getHeight();
public static void main(String args[])
new MyFrame() {};
package help;
import java.awt.Cursor;
import java.awt.Graphics;
import javax.swing.JPanel;
class ShapePanel extends JPanel {
private static final long serialVersionUID = 1L;
private Cursor c;
public ShapePanel(int w, int h) {
int W=w;
int H=h;
c = new Cursor (Cursor.CROSSHAIR_CURSOR); //Change cursor to cross hair
this.setCursor (c);
this.setPreferredSize(3000,3000);
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
private void setPreferredSize(int i, int i0) {
-
I'm having trouble making this application remove the "Client 1: 127.0.0.1 [localhost]" (and Client 2: or how ever many are connected) from a Box inside of a JPanel inside of a JFrame...
I searched around a bit, but nothing fixed my problem. (SwingUtilities.invokeLater(new Runnable() etc is from another post, but with or without it I can't get it to work...)
Running Fedora Core 2, JDK 1.4.2_04.
Thanks in advance.
(Hrmm, I had to mess with some of the longer lines to get them to display correctly...)
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import javax.swing.border.*;
public class PennyServer extends JFrame implements ActionListener
private Boolean finished;
private Border border;
private Box clientBox;
private BoxLayout boxlayout;
private Container content;
private Dimension size;
private JButton button;
private JPanel buttonList;
private JPanel clientList;
private LinkedList llClient, llInput, llOutput;
PennyServer()
setBounds(100, 100, 400, 400);
// setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setTitle("Test Server - by Joshua");
content = getContentPane();
border = BorderFactory.createRaisedBevelBorder();
boxlayout = new BoxLayout(content, BoxLayout.Y_AXIS);
clientBox = Box.createVerticalBox();
size = new Dimension(80, 20);
clientList = new JPanel(new BorderLayout());
buttonList = new JPanel();
content.setLayout(boxlayout);
clientList.setBorder(new TitledBorder(new EtchedBorder(), "Client List"));
clientList.add(clientBox, BorderLayout.CENTER);
buttonList.add(button = new JButton("Start"));
button.setBorder(border);
button.setPreferredSize(size);
button.addActionListener(this);
buttonList.add(button = new JButton("Quit"));
button.setBorder(border);
button.setPreferredSize(size);
button.addActionListener(this);
buttonList.setBorder(
new CompoundBorder(
BorderFactory.createLineBorder(Color.black, 1),
BorderFactory.createBevelBorder(BevelBorder.RAISED)
content.add(clientList);
content.add(buttonList);
setVisible(true);
finished = new Boolean(false);
llClient = new LinkedList();
llInput = new LinkedList();
llOutput = new LinkedList();
public void addClient(Socket s)
try
s.setSoTimeout(0100);
s.setTcpNoDelay(true);
llClient.addLast(s);
llInput.addLast(
new BufferedReader(
new InputStreamReader(
s.getInputStream()
llOutput.addLast(new PrintStream(s.getOutputStream()));
catch (Exception e)
System.out.println ("<" + e + ">");
SwingUtilities.invokeLater(new Runnable()
public void run()
refreshClientList();
public void refreshClientList()
InetAddress addr;
ListIterator iter = llClient.listIterator(0);
clientBox.removeAll();
clientBox.add(Box.createVerticalStrut(20));
while(iter.hasNext())
addr = ((Socket) iter.next()).getInetAddress();
System.out.println (
"Debug: refreshClientList(): adding client " +
(iter.previousIndex() + 1)
// This is not going away on the display...
clientBox.add(
new JLabel(
"Client " + (iter.previousIndex() + 1) + ": " +
addr.getHostAddress() + " [" + addr.getHostName() + "]"
if (iter.hasNext())
clientBox.add(Box.createVerticalStrut(20));
clientBox.revalidate();
public void select()
BufferedReader in;
ListIterator iterClient = llClient.listIterator(0);
ListIterator iterInput = llInput.listIterator(0);
ListIterator iterOutput = llOutput.listIterator(0);
PrintStream out;
Socket s;
String userInput;
while(iterClient.hasNext() && iterInput.hasNext() && iterOutput.hasNext())
s = (Socket) iterClient.next();
in = (BufferedReader) iterInput.next();
out = (PrintStream) iterOutput.next();
try
userInput = in.readLine();
if (userInput == null)
System.out.println (
"Client " + (iterClient.previousIndex() + 1) +
" has disconnected from the server."
iterClient.remove();
iterInput.remove();
iterOutput.remove();
SwingUtilities.invokeLater(new Runnable()
public void run()
refreshClientList();
continue;
System.out.println (
"Client " + (iterClient.previousIndex() + 1) +
": " + userInput
catch (SocketTimeoutException e)
{} // Do nothing, 100 millisecond time expired
catch (Exception e)
System.out.println ("<" + e + ">");
userInput = null;
public boolean alive()
return (!(finished.booleanValue()));
public static void main (String[] args)
try
PennyServer penny = new PennyServer();
ServerSocket ss;
Socket client;
ss = new ServerSocket(1234); // Start a listening socket on port 1234
ss.setReuseAddress(true); // Reuse local address/port combonation
ss.setSoTimeout(0100); // 100 milliseconds, to simulate nonblocking IO
while(penny.alive())
penny.select(); // Poll sockets for input
try
penny.addClient(client = ss.accept());
catch (SocketTimeoutException e)
{} // Do nothing, 100 millisecond time expired
penny.dispose();
ss.close();
catch (Exception e)
System.out.println ("<" + e + ">");
public void actionPerformed(ActionEvent event)
if (event.getActionCommand().equals("Start"))
else if (event.getActionCommand().equals("Quit"))
finished = new Boolean(true);
}JoshuaAhha! Thank you, sjl. It works perfectly now.
I thought it would be something silly, but I couldn't for the life of me figure out what.
Joshua -
Problem in JSF with Swing in a web application
hi
i am using jsf for my online projects.my problem is that when i use Swing concept ,the server is closed automatically when i click the swing dialog option 'OK', how can i protect server being closed automatically when user click the the options of Swing dialog box.it is so tedious because my application is going to integrate
with online server?
my swing java file is
* FileExistsDialog.java
package com.obs.ftw.util.alert;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.Rectangle2D;
import java.util.*;
import javax.swing.*;
import javax.swing.plaf.metal.MetalLookAndFeel;
* FileExistsDialog: A JOptionPane-like dialog that displays the message
* that a file exists.
public class FileExistsDialog extends JDialog {
* The component that gets the focus when the window is first opened
private Component initialFocusOwner = null;
* Command string for replace action (e.g., a button).
* This string is never presented to the user and should
* not be internationalized.
private String CMD_REPLACE = "OK"/*NOI18N*/;
* Command string for a cancel action (e.g., a button).
* This string is never presented to the user and should
* not be internationalized.
private String CMD_CANCEL = "CANCEL"/*NOI18N*/;
// Components we need to access after initialization
private JButton replaceButton = null;
private JButton cancelButton = null;
public FileExistsDialog(){
System.out.println("INSIDE THE FILE EXIST DIALOG");
JFrame frame = new JFrame() {
public Dimension getPreferredSize() {
return new Dimension(200,100);
frame.setTitle("Debugging frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(false);
FileExistsDialog dialog = new FileExistsDialog(frame, true);
dialog.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent event) {
System.exit(0);
public void windowClosed(WindowEvent event) {
System.exit(0);
dialog.pack();
dialog.setVisible(true);
* Creates a new FileExistsDialog
* @param parent parent frame
* @param modal modal flag
public FileExistsDialog(Frame parent,boolean modal) {
super(parent, modal);
//initResources();
System.out.println("INSIDE THE FILE EXIST DIALOG CONSTRUCTOR");
initComponents();
pack();
* Determines the locale, loads resources
/* public void initResources() {
Locale locale = Locale.getDefault();
resources = ResourceBundle.getBundle(
"samples.resources.bundles.FileExistsDialogResources", locale);
imagePath = resources.getString("images.path");
}*/ // initResources()
* Sets all of the buttons to be the same size. This is done
* dynamically after the buttons are created, so that the layout
* automatically adjusts to the locale-specific strings.
private void equalizeButtonSizes() {
System.out.println("INSIDE THE equalizeButtonSizes()");
String[] labels = new String[] {
replaceButton.getText(),
cancelButton.getText()
// Get the largest width and height
Dimension maxSize= new Dimension(0,0);
Rectangle2D textBounds = null;
Dimension textSize = null;
FontMetrics metrics =
replaceButton.getFontMetrics(replaceButton.getFont());
Graphics g = getGraphics();
for (int i = 0; i < labels.length; ++i) {
textBounds = metrics.getStringBounds(labels, g);
maxSize.width =
Math.max(maxSize.width, (int)textBounds.getWidth());
maxSize.height =
Math.max(maxSize.height, (int)textBounds.getHeight());
Insets insets =
replaceButton.getBorder().getBorderInsets(replaceButton);
maxSize.width += insets.left + insets.right;
maxSize.height += insets.top + insets.bottom;
// reset preferred and maximum size since BoxLayout takes both
// into account
replaceButton.setPreferredSize((Dimension)maxSize.clone());
cancelButton.setPreferredSize((Dimension)maxSize.clone());
replaceButton.setMaximumSize((Dimension)maxSize.clone());
cancelButton.setMaximumSize((Dimension)maxSize.clone());
} // equalizeButtonSizes()
* This method is called from within the constructor to
* initialize the dialog.
private void initComponents() {
System.out.println("INSIDE THE initComponents()");
// Configure the window, itself
Container contents = getContentPane();
contents.setLayout(new GridBagLayout ());
GridBagConstraints constraints = null;
setTitle("Waring");
// accessibility - all applets, frames, and dialogs should
// have descriptions
this.getAccessibleContext().setAccessibleDescription("Descriptions");
addWindowListener(new WindowAdapter() {
public void windowOpened(WindowEvent event) {
// For some reason the window opens with no focus owner,
// so we need to force the issue
if (initialFocusOwner != null) {
initialFocusOwner.requestFocus();
// Only do this the 1st time the window is opened
initialFocusOwner = null;
public void windowClosing(WindowEvent event) {
System.out.println("INSIDE THE windowClosing");
// Treat it like a cancel
windowAction(CMD_CANCEL);
// image
JLabel imageLabel = new JLabel();
imageLabel.setIcon(
new ImageIcon("/images/degraded_large.gif"));
// accessibility - set name so that low vision users get a description
imageLabel.getAccessibleContext().setAccessibleName("OK");
constraints = new GridBagConstraints ();
constraints.gridheight = 2;
constraints.insets = new Insets(12, 33, 0, 0);
constraints.anchor = GridBagConstraints.NORTHEAST;
contents.add(imageLabel, constraints);
// header
JLabel headerLabel = new JLabel ();
headerLabel.setText("SAMPLE");
headerLabel.setForeground(
new Color(MetalLookAndFeel.getBlack().getRGB()));
constraints = new GridBagConstraints ();
constraints.insets = new Insets(12, 12, 0, 11);
constraints.anchor = GridBagConstraints.WEST;
contents.add(headerLabel, constraints);
// Actual text of the message
JTextArea contentTextArea = new JTextArea();
contentTextArea.setEditable(false);
contentTextArea.setText("SAMPLE");
contentTextArea.setBackground(
new Color(MetalLookAndFeel.getControl().getRGB()));
// accessibility -- every component that can have the
// keyboard focus must have a name. This text area has no
// label, so the name must be set explicitly (if it had a
// label, the name would be pulled from the label).
contentTextArea.getAccessibleContext().setAccessibleName(
"CONTENTNAME");
constraints = new GridBagConstraints ();
constraints.gridx = 1;
constraints.gridy = 1;
constraints.insets = new Insets(0, 12, 0, 11);
constraints.anchor = GridBagConstraints.WEST;
contents.add(contentTextArea, constraints);
// Buttons
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout (new BoxLayout(buttonPanel, 0));
replaceButton = new JButton();
replaceButton.setActionCommand(CMD_REPLACE);
replaceButton.setText("OK");
replaceButton.setToolTipText("TO OK");
replaceButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
windowAction(event);
buttonPanel.add(replaceButton);
// spacing
buttonPanel.add(Box.createRigidArea(new Dimension(5,0)));
cancelButton = new JButton();
cancelButton.setActionCommand(CMD_CANCEL);
cancelButton.setText("CANCEL");
cancelButton.setNextFocusableComponent(replaceButton);
cancelButton.setToolTipText("TO CANCEL");
cancelButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
windowAction(event);
buttonPanel.add(cancelButton);
constraints = new GridBagConstraints ();
constraints.gridx = 1;
constraints.gridy = 2;
constraints.insets = new Insets(12, 12, 11, 11);
constraints.anchor = GridBagConstraints.WEST;
contents.add(buttonPanel, constraints);
// Equalize the sizes of all the buttons
equalizeButtonSizes();
// For some reason, the dialog appears with no input focus.
// We added a window listener above to force the issue
initialFocusOwner = replaceButton;
} // initComponents()
* The user has selected an option. Here we close and dispose the dialog.
* If actionCommand is an ActionEvent, getCommandString() is called,
* otherwise toString() is used to get the action command.
* @param actionCommand may be null
private void windowAction(Object actionCommand) {
System.out.println("INSIDE THE WINDOW ACTION");
String cmd = null;
if (actionCommand != null) {
if (actionCommand instanceof ActionEvent) {
cmd = ((ActionEvent)actionCommand).getActionCommand();
} else {
cmd = actionCommand.toString();
if (cmd == null) {
// do nothing
} else if (cmd.equals(CMD_REPLACE)) {
System.out.println("your replace code here...");
} else if (cmd.equals(CMD_CANCEL)) {
System.out.println("your cancel code here...");
setVisible(false);
dispose();
} // windowAction()
* This main() is provided for debugging purposes, to display a
* sample dialog.
// main()
} // class FileExistsDialog
and calling java function is
public String fileDialog(){
return "Success";
public void processFile(ActionEvent event){
System.out.println("INSIDE THE FILE DIALOG");
FileExistsDialog file = new FileExistsDialog();
System.out.println("SUCCESS");
called from
<h:commandButton action="#{userLogin.fileDialog}" actionListener="#{userLogin.processFile}"></h:commandButton>
pls help me as soon
advance thanks
rgds
oasisdesertsSwing is GUI library for use in desktop applications.
JSF is a web application framework which runs on an application server and is accessed by clients via web browsers.
To fully understand what you have done, try accessing your application from a different machine than the server.
To answer your question, don't invoke System.exit() if you would like the process to continue. But that is the least of your problems. -
Focus Problem on Solaris with jdk 1.3.1
Hi all,
We are having a focus problem on Solaris. The same code works fine on Windows without any problem.
I am sending the test code and run steps below which you can compile and repeat the problem.
NOTE: When we put a comment on the line "f1.requestFocus();" in TestFocus.java it works OK.
Run Steps :
1. Run TestFocus.class
2. A JFrame appears with 2 text field and a button
3. Try to write something on the text fields. It works OK.
4. Click the button to open a new JFrame
5. A new JFrame opens with a single text field and a button.
6. Click the button to close the second frame
7. You are now on the main JFrame
8. Try to write something on the text fields. It works OK.
9. Repeat the steps 4-7
10. Try to write something on the text fields. You are able to focus and write on the first field. BUT you cannot select or write the second Field!
JAVA SOURCE FILES :
PenHesapListener.java :
public interface PenHesapListener extends java.util.EventListener {
void tamam_actionPerformed(java.util.EventObject newEvent);
void iptal_actionPerformed(java.util.EventObject newEvent);
------PenHesapLisEventMulticaster.java----------------------------------
public class PenHesapLisEventMulticaster extends java.awt.AWTEventMulticaster implements PenHesapListener {
* Constructor to support multicast events.
* @param a java.util.EventListener
* @param b java.util.EventListener
protected PenHesapLisEventMulticaster(java.util.EventListener a, java.util.EventListener b) {
super(a, b);
* Add new listener to support multicast events.
* @return muhasebe.HesappenListener
* @param a muhasebe.HesappenListener
* @param b muhasebe.HesappenListener
public static PenHesapListener add(PenHesapListener a, PenHesapListener b) {
return (PenHesapListener)addInternal(a, b);
* Add new listener to support multicast events.
* @return java.util.EventListener
* @param a java.util.EventListener
* @param b java.util.EventListener
protected static java.util.EventListener addInternal(java.util.EventListener a, java.util.EventListener b) {
if (a == null) return b;
if (b == null) return a;
return new PenHesapLisEventMulticaster(a, b);
* @return java.util.EventListener
* @param oldl muhasebe.HesappenListener
protected java.util.EventListener remove(PenHesapListener oldl) {
if (oldl == a) return b;
if (oldl == b) return a;
java.util.EventListener a2 = removeInternal(a, oldl);
java.util.EventListener b2 = removeInternal(b, oldl);
if (a2 == a && b2 == b)
return this;
return addInternal(a2, b2);
* Remove listener to support multicast events.
* @return muhasebe.HesappenListener
* @param l muhasebe.HesappenListener
* @param oldl muhasebe.HesappenListener
public static PenHesapListener remove(PenHesapListener l, PenHesapListener oldl) {
if (l == oldl || l == null)
return null;
if(l instanceof PenHesapLisEventMulticaster)
return (PenHesapListener)((PenHesapLisEventMulticaster) l).remove(oldl);
return l;
public void tamam_actionPerformed(java.util.EventObject newEvent) {
((PenHesapListener)a).tamam_actionPerformed(newEvent);
((PenHesapListener)b).tamam_actionPerformed(newEvent);
public void iptal_actionPerformed(java.util.EventObject newEvent) {
((PenHesapListener)a).iptal_actionPerformed(newEvent);
((PenHesapListener)b).iptal_actionPerformed(newEvent);
---------TestFocus2.java-----------------------------------------
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.event.WindowAdapter;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.text.SimpleDateFormat;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Color;
import java.util.Locale;
import java.util.ResourceBundle;
public class TestFocus2 extends JFrame implements ActionListener
protected transient PenHesapListener PenhListener = null ;
JTextField f10 = null;
JButton b10= null ;
JTextField f1 = new JTextField() ;
JButton b1 = new JButton() ;
JFrame f20 = null;
public TestFocus2()
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
getContentPane().add(f1);
getContentPane().add(b1);
pack();
setVisible(true);
b1.addActionListener(this);
public void actionPerformed(ActionEvent e)
if(e.getSource() == b1)
fireTamam_actionPerformed(e);
public void addPenHesapListener(PenHesapListener newListener)
PenhListener = PenHesapLisEventMulticaster.add(PenhListener, newListener);
return;
protected void fireTamam_actionPerformed(java.util.EventObject newEvent) {
PenhListener.tamam_actionPerformed(newEvent);
this.setVisible(false);
protected void fireiptal_actionPerformed(java.util.EventObject newEvent) {
PenhListener.iptal_actionPerformed(newEvent);
public static void main(String x[])
TestFocus2 gen01 = new TestFocus2();
--------TestFocus.java-----------------------------------
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.event.WindowAdapter;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.text.SimpleDateFormat;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Color;
import java.util.Locale;
import java.util.ResourceBundle;
import java.awt.Container;
public class TestFocus extends JFrame implements ActionListener
PenKreKart aPenKreKart = null ;
Container ctn = null;
JTextField f10 = null;
JButton b10= null ;
JTextField f1 = new JTextField() ;
JTextField f2 = new JTextField() ;
JButton b1 = new JButton() ;
JFrame f20 = null;
public TestFocus()
//aPenKreKart = new PenKreKart(true);
//aPenKreKart.aTemelPencere.setVisible(false);
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
getContentPane().add(f1);
getContentPane().add(f2);
getContentPane().add(b1);
pack();
setVisible(true);
b1.addActionListener(this);
public void actionPerformed(ActionEvent e)
if(e.getSource() == b1)
pencere_islemi();
// pencere koyma k?sm? .. begin
public void pencere_islemi() {
ctn = this;
ctn.setEnabled(false);
TestFocus2 fpen = new TestFocus2();
//aPenKreKart.aTemelPencere.setVisible(true); //buras?
//aPenKreKart.aTemelPencere.addPenHesapListener(new PenHesapListener() {
fpen.addPenHesapListener(new PenHesapListener() {
// metod tamam_actionPerformed begin...
public void tamam_actionPerformed(java.util.EventObject newEvent) {
ctn.setEnabled(true);
ctn.requestFocus();
// Problem is when we comment the below line it works .....
f1.requestFocus();
System.out.println("tamam");
// metod tamam_actionPerformed end...
// metod iptal_actionPerformed begin...
public void iptal_actionPerformed(java.util.EventObject newEvent) {
ctn.setEnabled(true);
ctn.requestFocus();
System.out.println("iptal");
// metod iptal_actionPerformed begin...
// pencere koyma k?sm? .. end
public static void main(String x[])
TestFocus gen01 = new TestFocus();Hi all,
We are having a focus problem on Solaris. The same code works fine on Windows without any problem.
I am sending the test code and run steps below which you can compile and repeat the problem.
NOTE: When we put a comment on the line "f1.requestFocus();" in TestFocus.java it works OK.
Run Steps :
1. Run TestFocus.class
2. A JFrame appears with 2 text field and a button
3. Try to write something on the text fields. It works OK.
4. Click the button to open a new JFrame
5. A new JFrame opens with a single text field and a button.
6. Click the button to close the second frame
7. You are now on the main JFrame
8. Try to write something on the text fields. It works OK.
9. Repeat the steps 4-7
10. Try to write something on the text fields. You are able to focus and write on the first field. BUT you cannot select or write the second Field!
JAVA SOURCE FILES :
PenHesapListener.java :
public interface PenHesapListener extends java.util.EventListener {
void tamam_actionPerformed(java.util.EventObject newEvent);
void iptal_actionPerformed(java.util.EventObject newEvent);
------PenHesapLisEventMulticaster.java----------------------------------
public class PenHesapLisEventMulticaster extends java.awt.AWTEventMulticaster implements PenHesapListener {
* Constructor to support multicast events.
* @param a java.util.EventListener
* @param b java.util.EventListener
protected PenHesapLisEventMulticaster(java.util.EventListener a, java.util.EventListener b) {
super(a, b);
* Add new listener to support multicast events.
* @return muhasebe.HesappenListener
* @param a muhasebe.HesappenListener
* @param b muhasebe.HesappenListener
public static PenHesapListener add(PenHesapListener a, PenHesapListener b) {
return (PenHesapListener)addInternal(a, b);
* Add new listener to support multicast events.
* @return java.util.EventListener
* @param a java.util.EventListener
* @param b java.util.EventListener
protected static java.util.EventListener addInternal(java.util.EventListener a, java.util.EventListener b) {
if (a == null) return b;
if (b == null) return a;
return new PenHesapLisEventMulticaster(a, b);
* @return java.util.EventListener
* @param oldl muhasebe.HesappenListener
protected java.util.EventListener remove(PenHesapListener oldl) {
if (oldl == a) return b;
if (oldl == b) return a;
java.util.EventListener a2 = removeInternal(a, oldl);
java.util.EventListener b2 = removeInternal(b, oldl);
if (a2 == a && b2 == b)
return this;
return addInternal(a2, b2);
* Remove listener to support multicast events.
* @return muhasebe.HesappenListener
* @param l muhasebe.HesappenListener
* @param oldl muhasebe.HesappenListener
public static PenHesapListener remove(PenHesapListener l, PenHesapListener oldl) {
if (l == oldl || l == null)
return null;
if(l instanceof PenHesapLisEventMulticaster)
return (PenHesapListener)((PenHesapLisEventMulticaster) l).remove(oldl);
return l;
public void tamam_actionPerformed(java.util.EventObject newEvent) {
((PenHesapListener)a).tamam_actionPerformed(newEvent);
((PenHesapListener)b).tamam_actionPerformed(newEvent);
public void iptal_actionPerformed(java.util.EventObject newEvent) {
((PenHesapListener)a).iptal_actionPerformed(newEvent);
((PenHesapListener)b).iptal_actionPerformed(newEvent);
---------TestFocus2.java-----------------------------------------
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.event.WindowAdapter;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.text.SimpleDateFormat;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Color;
import java.util.Locale;
import java.util.ResourceBundle;
public class TestFocus2 extends JFrame implements ActionListener
protected transient PenHesapListener PenhListener = null ;
JTextField f10 = null;
JButton b10= null ;
JTextField f1 = new JTextField() ;
JButton b1 = new JButton() ;
JFrame f20 = null;
public TestFocus2()
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
getContentPane().add(f1);
getContentPane().add(b1);
pack();
setVisible(true);
b1.addActionListener(this);
public void actionPerformed(ActionEvent e)
if(e.getSource() == b1)
fireTamam_actionPerformed(e);
public void addPenHesapListener(PenHesapListener newListener)
PenhListener = PenHesapLisEventMulticaster.add(PenhListener, newListener);
return;
protected void fireTamam_actionPerformed(java.util.EventObject newEvent) {
PenhListener.tamam_actionPerformed(newEvent);
this.setVisible(false);
protected void fireiptal_actionPerformed(java.util.EventObject newEvent) {
PenhListener.iptal_actionPerformed(newEvent);
public static void main(String x[])
TestFocus2 gen01 = new TestFocus2();
--------TestFocus.java-----------------------------------
import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.event.WindowAdapter;
import java.awt.event.KeyListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.ActionEvent;
import java.awt.event.WindowEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.text.SimpleDateFormat;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.Color;
import java.util.Locale;
import java.util.ResourceBundle;
import java.awt.Container;
public class TestFocus extends JFrame implements ActionListener
PenKreKart aPenKreKart = null ;
Container ctn = null;
JTextField f10 = null;
JButton b10= null ;
JTextField f1 = new JTextField() ;
JTextField f2 = new JTextField() ;
JButton b1 = new JButton() ;
JFrame f20 = null;
public TestFocus()
//aPenKreKart = new PenKreKart(true);
//aPenKreKart.aTemelPencere.setVisible(false);
getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
getContentPane().add(f1);
getContentPane().add(f2);
getContentPane().add(b1);
pack();
setVisible(true);
b1.addActionListener(this);
public void actionPerformed(ActionEvent e)
if(e.getSource() == b1)
pencere_islemi();
// pencere koyma k?sm? .. begin
public void pencere_islemi() {
ctn = this;
ctn.setEnabled(false);
TestFocus2 fpen = new TestFocus2();
//aPenKreKart.aTemelPencere.setVisible(true); //buras?
//aPenKreKart.aTemelPencere.addPenHesapListener(new PenHesapListener() {
fpen.addPenHesapListener(new PenHesapListener() {
// metod tamam_actionPerformed begin...
public void tamam_actionPerformed(java.util.EventObject newEvent) {
ctn.setEnabled(true);
ctn.requestFocus();
// Problem is when we comment the below line it works .....
f1.requestFocus();
System.out.println("tamam");
// metod tamam_actionPerformed end...
// metod iptal_actionPerformed begin...
public void iptal_actionPerformed(java.util.EventObject newEvent) {
ctn.setEnabled(true);
ctn.requestFocus();
System.out.println("iptal");
// metod iptal_actionPerformed begin...
// pencere koyma k?sm? .. end
public static void main(String x[])
TestFocus gen01 = new TestFocus(); -
Scroll bar problems ..Please help!!!!!!
This is what the program looks like. topPanel has newItemPanel on top of it. when you click continue newItemPanel becomes invisible and newItemDescriptionPanel becomes visible. When you click continue newItemDescriptionPanel becomes invisible and priceEnterPanel becomes visible.
I want newItemDescriptionPanel and priceEnterPanel to have a scroll bar. but everything I have tried hasn't worked. I am new. You will see the code is ugly and there is an attempt to add a scrollbar.
Please help
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.lang.System;
public class MainPanel extends JFrame implements ActionListener
private boolean firstRun = true;
private final int ITEM_PLAIN = 0; // Item types
private final int ITEM_CHECK = 1;
private final int ITEM_RADIO = 2;
private JPanel topPanel;
private JPanel newItemPanel;
private JRadioButton onlineAuctionRadio;
private JRadioButton fixedPriceRadio;
private ButtonGroup bg;
private JButton continueButton;
private JLabel blankLabel; //used to give space between things
private JPanel newItemDescriptionPanel;
private JPanel takeAdditionalSpacePanelCheckBox;
private JPanel takeAdditionalSpacePanel;
private JPanel takeAdditionalSpacePanelLabel;
private JPanel takeAdditionalSpacePanelLabel2;
private JPanel takeAdditionalSpacePanel2;
private JPanel takeAdditionalSpacePanel3;
private JPanel takeAdditionalSpacePanel4;
private JPanel takeAdditionalSpacePanel5;
JScrollPane displayScroller;
JEditorPane itemDescriptionTextArea;
GridBagLayout gridbag;
GridBagConstraints gbc;
private JCheckBox secondCategoryCheckBox;
private JLabel itemTitleLabel;
private JLabel requiredLabel, requiredLabel2;
private JLabel requiredStarLabel;
private JTextField itemTitleTextField;
private JLabel subtitleLabel;
private JTextField subtitleTextField;
private JLabel itemDescriptionLabel;
private JButton itemDescriptionContinueButton;
private JLabel percentageLabel;
//------- price enter page ----------------
private JLabel startingPriceLabel;
private JLabel dollarSignLabel;
private JTextField startingPriceTextField;
private JPanel fillUpSpacePanel;
private JPanel fillUpSpacePanel1;
private JPanel fillUpSpacePanel2;
private JLabel buyItNowLabel;
private JPanel fillUpSpacePanel3;
private JLabel dollarSignLabel2;
private JTextField buyItNowTextField;
private JPanel fillUpSpacePanel4;
private JPanel fillUpSpacePanel5;
private JPanel fillUpSpacePanel6;
private JPanel fillUpSpacePanel7;
private JPanel fillUpSpacePanel8;
private JPanel fillUpSpacePanel9;
private JPanel fillUpSpacePanel10;
private JPanel fillUpSpacePanel11;
private JPanel fillUpSpacePanel12;
private JPanel fillUpSpacePanel13;
private JPanel fillUpSpacePanel14;
private JPanel fillUpSpacePanel15;
private JPanel fillUpSpacePanel16;
private JPanel fillUpSpacePanel17;
private JPanel fillUpSpacePanel18;
private JLabel donatePercentageLabel;
private JTextField donatePercentageTextField;
private JPanel fSp; // fill space panel
private JPanel fSp1;
private JPanel fSp2;
private JPanel fSp3;
private JPanel fSp4;
private JPanel fSp5;
private JPanel fSp6;
private JPanel fSp7;
private JPanel fSp8;
private JPanel fSp9;
private JLabel numberOfPicturesLabel;
private JTextField numberOfPicturesTextField;
private JCheckBox superSizePicturesCheckBox;
private JLabel superSizePicturesLabel;
private JRadioButton standardPictureRadioButton;
private JRadioButton picturePackRadioButton;
private JCheckBox listingDesignerCheckBox;
private ButtonGroup bgPictures;
private JCheckBox valuePackCheckBox;
private JCheckBox galleryPictureCheckBox;
private JCheckBox subtitleCheckBox;
private JCheckBox boldCheckBox;
private JCheckBox borderCheckBox;
private JCheckBox highlightCheckBox;
private JCheckBox featuredPlusCheckBox;
private JCheckBox galleryFeaturedCheckBox;
private JLabel homePageFeaturedLabel;
private JComboBox homePageFeaturedComboBox;
private JCheckBox giftCheckBox;
JScrollPane priceEnterPanelScroll;
private JButton backToRadioButton;
private JButton backToItemDescriptionButton;
private JPanel priceEnterPanel;
private final static String RADIOPANEL = "JPanel with radios";
private final static String DESCRIPTIONPANEL = "JPanel with description";
private final static String PRICEENTERPANEL = "JPanel with price entering";
private JPanel cards;
private JMenuBar menuBar;
private JMenu menuFile;
private JMenu menuEdit;
private JMenu menuProperty;
private JMenuItem menuPropertySystem;
private JMenuItem menuPropertyEditor;
private JMenuItem menuPropertyDisplay;
private JMenu menuFileNew;
private JMenuItem menuFileNewAccount;
private JMenuItem menuFileNewItem;
private JMenuItem menuFileOpen;
private JMenuItem menuFileSave;
private JMenuItem menuFileSaveAs;
private JMenuItem menuFileExit;
private JMenuItem menuEditCopy;
private JMenuItem menuEditCut;
private JMenuItem menuEditPaste;
public MainPanel()
requiredLabel = new JLabel ("* Required");
requiredLabel.setForeground (Color.red);
requiredLabel2 = new JLabel ("* Required");
requiredLabel2.setForeground (Color.red);
requiredStarLabel = new JLabel ("*");
requiredStarLabel.setForeground (Color.green);
setTitle( "photo galleries" );
setSize( 310, 130 );
topPanel = new JPanel();
topPanel.setLayout( new BorderLayout() );
topPanel.setBorder (BorderFactory.createTitledBorder ("TopPanel"));
//topPanel.setPreferredSize(new Dimension (300,300));
getContentPane().add( topPanel );
topPanel.setVisible (false);
// For New Item Panel
ButtonListener ears = new ButtonListener();
blankLabel = new JLabel (" "); // used to give space between radio buttons and continue button
continueButton = new JButton ("Continue >");
continueButton.addActionListener (ears);
backToRadioButton = new JButton ("< back");
backToRadioButton.addActionListener (ears);
itemDescriptionContinueButton = new JButton ("Continue >");
itemDescriptionContinueButton.addActionListener (ears);
backToItemDescriptionButton = new JButton ("< back");
backToItemDescriptionButton.addActionListener (ears);
newItemPanel = new JPanel();
newItemPanel.setLayout (new BoxLayout(newItemPanel, BoxLayout.Y_AXIS));
//topPanel.add (newItemPanel, BorderLayout.NORTH);
newItemPanel.setBorder (BorderFactory.createTitledBorder ("NewItemPanel"));
newItemPanel.setVisible (false);
onlineAuctionRadio = new JRadioButton ("Sold item at online Auction" );
fixedPriceRadio = new JRadioButton ("Sold at a Fixed Price");
bg = new ButtonGroup();
bg.add(onlineAuctionRadio);
bg.add(fixedPriceRadio);
onlineAuctionRadio.addActionListener (ears);
fixedPriceRadio.addActionListener (ears);
newItemPanel.add (onlineAuctionRadio);
newItemPanel.add (fixedPriceRadio);
newItemPanel.add (blankLabel);
newItemPanel.add (continueButton);
// ------ After continue pressed ---------
newItemDescriptionPanel = new JPanel();
newItemDescriptionPanel.setLayout (new BoxLayout(newItemDescriptionPanel, BoxLayout.Y_AXIS));
newItemPanel.add (newItemDescriptionPanel, BorderLayout.NORTH);
newItemDescriptionPanel.setBorder (BorderFactory.createTitledBorder ("newItemDescriptionPanel"));
secondCategoryCheckBox = new JCheckBox ("The item was listed in a second category");
newItemDescriptionPanel.setVisible (false);
itemTitleLabel = new JLabel ("Item title");
itemTitleTextField = new JTextField (30);
subtitleLabel = new JLabel ("Subtitle ($0.50)");
subtitleTextField = new JTextField (30);
itemDescriptionLabel = new JLabel ("Item description");
itemDescriptionTextArea = new JEditorPane();
itemDescriptionTextArea.setContentType( "text/html" );
itemDescriptionTextArea.setEditable( false );
itemDescriptionTextArea.setPreferredSize(new Dimension (500,250));
itemDescriptionTextArea.setFont(new Font( "Serif", Font.PLAIN, 12 ));
itemDescriptionTextArea.setForeground( Color.black );
gbc = new GridBagConstraints();
gbc.gridx = 0;
gbc.gridy = 4;
displayScroller = new JScrollPane( itemDescriptionTextArea );
gridbag = new GridBagLayout ();
gridbag.setConstraints( displayScroller, gbc );
itemDescriptionTextArea.setEditable( true );
takeAdditionalSpacePanelCheckBox = new JPanel(new FlowLayout(FlowLayout.LEFT));
takeAdditionalSpacePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanelLabel = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanelLabel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));//<--added, to take additional space
takeAdditionalSpacePanel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
takeAdditionalSpacePanel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
//takeAdditionalSpacePanel2.setBorder (BorderFactory.createTitledBorder ("Additonal 2"));
takeAdditionalSpacePanelCheckBox.add (secondCategoryCheckBox);
newItemDescriptionPanel.add (takeAdditionalSpacePanelCheckBox);
//newItemDescriptionPanel.add (blankLabel);
takeAdditionalSpacePanelLabel.add (itemTitleLabel);
takeAdditionalSpacePanelLabel.add (requiredLabel);
newItemDescriptionPanel.add (takeAdditionalSpacePanelLabel);
//newItemDescriptionPanel.add (itemTitleTextField);
takeAdditionalSpacePanel.add(itemTitleTextField);//<--add textfield to panel
newItemDescriptionPanel.add (takeAdditionalSpacePanel);//<--add panel to boxlayout panel
takeAdditionalSpacePanelLabel2.add (subtitleLabel);
newItemDescriptionPanel.add (takeAdditionalSpacePanelLabel2);
takeAdditionalSpacePanel2.add (subtitleTextField);
newItemDescriptionPanel.add (takeAdditionalSpacePanel2);
takeAdditionalSpacePanel4.add (itemDescriptionLabel);
//takeAdditionalSpacePanel4.add (requiredLabel2);
newItemDescriptionPanel.add (takeAdditionalSpacePanel4);
takeAdditionalSpacePanel3.add (displayScroller);
newItemDescriptionPanel.add (takeAdditionalSpacePanel3);
takeAdditionalSpacePanel5.add (backToRadioButton);
takeAdditionalSpacePanel5.add (itemDescriptionContinueButton);
newItemDescriptionPanel.add (takeAdditionalSpacePanel5);
//newItemDescriptionPanel.setLayout (new BoxLayout(newItemDescriptionPanel, BoxLayout.Y_AXIS));
//----------- Price Enter Page ----------------
priceEnterPanel = new JPanel();
priceEnterPanel.setLayout (new BoxLayout(priceEnterPanel, BoxLayout.Y_AXIS));
newItemDescriptionPanel.add (priceEnterPanel, BorderLayout.NORTH);
priceEnterPanel.setBorder (BorderFactory.createTitledBorder ("Price enter Panel"));
priceEnterPanel.setVisible (false);
priceEnterPanelScroll = new JScrollPane (priceEnterPanel);
topPanel.add (priceEnterPanelScroll);
standardPictureRadioButton = new JRadioButton ("Standard");
picturePackRadioButton = new JRadioButton ("Picture Pack ($1.00 for up to 6 pictures or $1.50 for 7 to 12 pictures)");
bgPictures = new ButtonGroup();
bgPictures.add(standardPictureRadioButton);
bgPictures.add(picturePackRadioButton);
standardPictureRadioButton.addActionListener (ears);
picturePackRadioButton.addActionListener (ears);
superSizePicturesCheckBox = new JCheckBox ("Supersize Pictures ($0.75)");
listingDesignerCheckBox = new JCheckBox ("Listing designer $0.10");
valuePackCheckBox = new JCheckBox ("Get the Essentials for less! Gallery, Subtitle, Listing Designer. $0.65 (save $0.30)");
superSizePicturesCheckBox.setEnabled (false);
superSizePicturesCheckBox.addActionListener (ears);
listingDesignerCheckBox.addActionListener (ears);
valuePackCheckBox.addActionListener (ears);
startingPriceLabel = new JLabel ("Starting Price");
dollarSignLabel = new JLabel ("$");
startingPriceTextField = new JTextField (10);
buyItNowLabel = new JLabel ("Buy It Now");
dollarSignLabel2 = new JLabel ("$");
buyItNowTextField = new JTextField (10);
donatePercentageLabel = new JLabel ("Donate percentage of sale");
donatePercentageTextField = new JTextField (2);
donatePercentageTextField.setText ("0");
percentageLabel = new JLabel ("%");
// Right-justify the text
donatePercentageTextField.setHorizontalAlignment(JTextField.RIGHT);
numberOfPicturesLabel = new JLabel ("Number of pictures used");
numberOfPicturesTextField = new JTextField (1);
numberOfPicturesTextField.setText ("0");
galleryPictureCheckBox = new JCheckBox ("Gallery ($0.35) [Requires a picture]");
subtitleCheckBox = new JCheckBox ("Subtitle ($0.50)");
boldCheckBox = new JCheckBox ("Bold ($1.00)");
borderCheckBox = new JCheckBox ("Border ($3.00)");
highlightCheckBox = new JCheckBox ("Highlight ($5.00)");
featuredPlusCheckBox = new JCheckBox ("Featured Plus! ($19.95)");
galleryFeaturedCheckBox = new JCheckBox ("Gallery Featured ($19.95) [Requires a picture]");
homePageFeaturedLabel = new JLabel ("Home Page Featured ($39.95 for 1 item, $79.95 for 2 or more items)");
homePageFeaturedComboBox = new JComboBox ();
homePageFeaturedComboBox.addItem (("None..."));
homePageFeaturedComboBox.addItem (("1 item"));
homePageFeaturedComboBox.addItem (("2 or more items"));
giftCheckBox = new JCheckBox ("Show as a gift ($0.25)");
fillUpSpacePanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel7 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel8 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel9 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel10 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel11 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel12 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel13 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel14 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel15 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel16 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel17 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel18 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp1 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp2 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp3 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp4 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp5 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp6 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp7 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp8 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fSp9 = new JPanel(new FlowLayout(FlowLayout.LEFT));
fillUpSpacePanel.add (startingPriceLabel);
fillUpSpacePanel.add (requiredLabel2);
priceEnterPanel.add (fillUpSpacePanel);
fillUpSpacePanel2.add (dollarSignLabel);
fillUpSpacePanel2.add (startingPriceTextField);
priceEnterPanel.add (fillUpSpacePanel2);
// fillUpSpacePanel1.add (backToItemDescriptionButton);
// priceEnterPanel.add (fillUpSpacePanel1);
fillUpSpacePanel3.add (buyItNowLabel);
priceEnterPanel.add (fillUpSpacePanel3);
fillUpSpacePanel4.add (dollarSignLabel2);
fillUpSpacePanel4.add (buyItNowTextField);
priceEnterPanel.add (fillUpSpacePanel4);
fillUpSpacePanel1.add (donatePercentageLabel);
priceEnterPanel.add (fillUpSpacePanel1);
fillUpSpacePanel5.add (donatePercentageTextField);
fillUpSpacePanel5.add (percentageLabel);
priceEnterPanel.add (fillUpSpacePanel5);
fillUpSpacePanel6.add (numberOfPicturesLabel);
priceEnterPanel.add (fillUpSpacePanel6);
fillUpSpacePanel7.add (numberOfPicturesTextField);
priceEnterPanel.add (fillUpSpacePanel7);
fillUpSpacePanel8.add (standardPictureRadioButton);
priceEnterPanel.add (fillUpSpacePanel8);
fillUpSpacePanel10.add (blankLabel);
fillUpSpacePanel10.add (superSizePicturesCheckBox);
priceEnterPanel.add (fillUpSpacePanel10);
fillUpSpacePanel9.add (picturePackRadioButton);
priceEnterPanel.add (fillUpSpacePanel10);
fillUpSpacePanel11.add (picturePackRadioButton);
priceEnterPanel.add (fillUpSpacePanel11);
fillUpSpacePanel12.add (listingDesignerCheckBox);
priceEnterPanel.add (fillUpSpacePanel12);
fillUpSpacePanel13.add (valuePackCheckBox);
priceEnterPanel.add (fillUpSpacePanel13);
fSp.add (galleryPictureCheckBox);
priceEnterPanel.add (fSp);
fSp1.add (subtitleCheckBox);
priceEnterPanel.add (fSp1);
fSp2.add (boldCheckBox);
priceEnterPanel.add (fSp2);
fSp3.add (borderCheckBox);
priceEnterPanel.add (fSp3);
fSp4.add (highlightCheckBox);
priceEnterPanel.add (fSp4);
fSp5.add (featuredPlusCheckBox);
priceEnterPanel.add (fSp5);
fSp6.add (galleryFeaturedCheckBox);
priceEnterPanel.add (fSp6);
fSp7.add (homePageFeaturedLabel);
priceEnterPanel.add (fSp7);
fSp8.add (homePageFeaturedComboBox);
priceEnterPanel.add (fSp8);
fSp9.add (giftCheckBox);
priceEnterPanel.add (fSp9);
newItemDescriptionPanel.add (priceEnterPanelScroll);
//Create the panel that contains the "cards".
cards = new JPanel(new CardLayout());
cards.add(newItemPanel, RADIOPANEL);
cards.add(newItemDescriptionPanel, DESCRIPTIONPANEL);
cards.add(priceEnterPanel, PRICEENTERPANEL);
topPanel.add(cards, BorderLayout.NORTH);
// Create the menu bar
menuBar = new JMenuBar();
// Set this instance as the application's menu bar
setJMenuBar( menuBar );
// Build the property sub-menu
menuProperty = new JMenu( "Properties" );
menuProperty.setMnemonic( 'P' );
// Create property items
menuPropertySystem = CreateMenuItem( menuProperty, ITEM_PLAIN,
"System...", null, 'S', null );
menuPropertyEditor = CreateMenuItem( menuProperty, ITEM_PLAIN,
"Editor...", null, 'E', null );
menuPropertyDisplay = CreateMenuItem( menuProperty, ITEM_PLAIN,
"Display...", null, 'D', null );
//Build the File-New sub-menu
menuFileNew = new JMenu ("New");
menuFileNew.setMnemonic ('N');
//Create File-New items
menuFileNewItem = CreateMenuItem( menuFileNew, ITEM_PLAIN,
"Item", null, 'A', null );
menuFileNewAccount = CreateMenuItem( menuFileNew, ITEM_PLAIN,
"Account", null, 'A', null );
// Create the file menu
menuFile = new JMenu( "File" );
menuFile.setMnemonic( 'F' );
menuBar.add( menuFile );
//Add the File-New menu
menuFile.add( menuFileNew );
// Create the file menu
// Build a file menu items
menuFileOpen = CreateMenuItem( menuFile, ITEM_PLAIN, "Open...",
new ImageIcon( "open.gif" ), 'O',
"Open a new file" );
menuFileSave = CreateMenuItem( menuFile, ITEM_PLAIN, "Save",
new ImageIcon( "save.gif" ), 'S',
" Save this file" );
menuFileSaveAs = CreateMenuItem( menuFile, ITEM_PLAIN,
"Save As...", null, 'A',
"Save this data to a new file" );
// Add the property menu
menuFile.addSeparator();
menuFile.add( menuProperty );
menuFile.addSeparator();
menuFileExit = CreateMenuItem( menuFile, ITEM_PLAIN,
"Exit", null, 'X',
"Exit the program" );
//menuFileExit.addActionListener(this);
// Create the file menu
menuEdit = new JMenu( "Edit" );
menuEdit.setMnemonic( 'E' );
menuBar.add( menuEdit );
// Create edit menu options
menuEditCut = CreateMenuItem( menuEdit, ITEM_PLAIN,
"Cut", null, 'T',
"Cut data to the clipboard" );
menuEditCopy = CreateMenuItem( menuEdit, ITEM_PLAIN,
"Copy", null, 'C',
"Copy data to the clipboard" );
menuEditPaste = CreateMenuItem( menuEdit, ITEM_PLAIN,
"Paste", null, 'P',
"Paste data from the clipboard" );
public JMenuItem CreateMenuItem( JMenu menu, int iType, String sText,
ImageIcon image, int acceleratorKey,
String sToolTip )
// Create the item
JMenuItem menuItem;
switch( iType )
case ITEM_RADIO:
menuItem = new JRadioButtonMenuItem();
break;
case ITEM_CHECK:
menuItem = new JCheckBoxMenuItem();
break;
default:
menuItem = new JMenuItem();
break;
// Add the item test
menuItem.setText( sText );
// Add the optional icon
if( image != null )
menuItem.setIcon( image );
// Add the accelerator key
if( acceleratorKey > 0 )
menuItem.setMnemonic( acceleratorKey );
// Add the optional tool tip text
if( sToolTip != null )
menuItem.setToolTipText( sToolTip );
// Add an action handler to this menu item
menuItem.addActionListener( this );
menu.add( menuItem );
return menuItem;
public void actionPerformed( ActionEvent event )
CardLayout cl = (CardLayout)(cards.getLayout());
if (event.getSource() == menuFileExit)
System.exit(0);
if (event.getSource() == menuFileNewAccount)
System.out.println ("hlkadflkajfalkdjfalksfj");
if (event.getSource() == menuFileNewItem){
if (firstRun){
newItemPanel.setVisible (true);
topPanel.setVisible (true);
cl.show(cards,RADIOPANEL);
firstRun = false;
//System.out.println( event );
private class ButtonListener implements ActionListener
public void actionPerformed(ActionEvent event)
CardLayout cl = (CardLayout)(cards.getLayout());
// cl.show(cards, (String)evt.getItem());
if (event.getSource() == continueButton){
if (!(onlineAuctionRadio.isSelected()) && !(fixedPriceRadio.isSelected()))
JOptionPane.showMessageDialog(null, "You must select at least one.", "Error", JOptionPane.ERROR_MESSAGE);
else{
if (onlineAuctionRadio.isSelected()){
cl.show (cards, DESCRIPTIONPANEL);
//newItemPanel.setVisible (false);
//newItemDescriptionPanel.setVisible (true);
if (event.getSource() == itemDescriptionContinueButton){
if (itemTitleTextField.getText().trim().equalsIgnoreCase(""))
JOptionPane.showMessageDialog(null, "You must enter a title.", "Error", JOptionPane.ERROR_MESSAGE);
else
cl.show (cards, PRICEENTERPANEL);
if (event.getSource() == backToRadioButton){
cl.show (cards, RADIOPANEL);
if (event.getSource() == backToItemDescriptionButton){
cl.show(cards, DESCRIPTIONPANEL);
if (standardPictureRadioButton.isSelected()){
superSizePicturesCheckBox.setEnabled (true);
if (picturePackRadioButton.isSelected()){
superSizePicturesCheckBox.setEnabled (false);
} //end of action performed
}Mostly I see there is about 100 times as much code as I care to look at.
So you don't know how to get a panel in a scroll pane, and then get that scroll pane into your GUI? Then try doing that by itself, not encumbered with 10000 lines of irrelevant code. Once you have it working, plug it into the big lump of code. Or if you can't get it working, ask about the small problem here. -
Problem with the GridBagLayout Manager
Hello i am new to Java Swing and i am facing a problem with the GridBagLayout layout manager . the code in question is attached. First compile and run the code. It will execute w/o probs . Then go to the "Console" tab. There the diff components (6 buttons and 1 text area) are haphazardly arranged where as all measures where taken to prevent it in the code. The GridBagLayout manager for this tab is not working properly please help.
The code in question:-
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MainForm extends JFrame{
JTabbedPane jtp = new JTabbedPane();
Container generalContainer; // container for the general pane
Container consoleContainer; // container for the console pane
GridBagLayout consoleLayout = new GridBagLayout(); // GridBagLayout for the console
GridBagConstraints consoleConstraints;// GridBagConstraints for the console
public MainForm()
super("Welcome to Grey Griffin -- Network Simulator");
setSize(700,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel generalPane = new JPanel();
generalPane.setLayout(new BoxLayout(generalPane, BoxLayout.Y_AXIS));
JPanel consolePane = new JPanel();
consolePane.setLayout(new BoxLayout(consolePane, BoxLayout.Y_AXIS));
JPanel designPane = new JPanel();
designPane.setLayout(new BoxLayout(designPane, BoxLayout.Y_AXIS));
JPanel outputPane = new JPanel();
outputPane.setLayout(new BoxLayout(outputPane, BoxLayout.Y_AXIS));
//Setting up Layout for all the tabs
//for general tab
FlowLayout layout= new FlowLayout();
generalContainer = generalPane;
layout.setAlignment(FlowLayout.CENTER);
generalContainer.setLayout( layout );
//for console tab
consoleContainer = consolePane;
consoleConstraints = new GridBagConstraints();
// *******Finished********
//********** All buttons text areas are declared here**********
//*******for the general tab**********
JButton generalCreate = new JButton("Create a New Network");
JButton generalOpen = new JButton("Open an Existing Network");
JButton generalSave = new JButton("Save the Network");
JButton generalSaveAs = new JButton("Save As..........");
JButton generalExit = new JButton("Exit");
//******END******
//*******for the console tab
//text area
JTextArea consoleCode = new JTextArea();
consoleCode.setEditable(true);
consoleCode.setMaximumSize(new Dimension(700,400));
consoleCode.setAlignmentX(0.0f);
//text area complete
//*******for the Console tab**********
JButton consoleCompile = new JButton("Compile Code");
JButton consoleSimulate = new JButton("Simulate Code");
JButton consoleReset = new JButton("Reset");
JButton consoleOpen = new JButton("Open script files");
JButton consoleSave = new JButton("Save script files");
JButton consoleConvert = new JButton("Convert Script files to graphical form");
//***************END****************
//Adding buttons and text areas to there respective tabs
// for the general tab
generalContainer.add(generalCreate);
generalContainer.add(generalOpen);
generalContainer.add(generalSave);
generalContainer.add(generalSaveAs);
generalContainer.add(generalExit);
//****END****
// for the console tab
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleOpen,0,0,1,1);
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleSave,1,1,1,1);
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleConvert,1,2,1,1);
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleCode,1,0,3,1);
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleCompile,2,0,1,1);
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleSimulate,2,1,1,1);
consoleConstraints.fill = GridBagConstraints.BOTH;
addComp(consoleReset,2,2,1,1);
//****END****
// adding the tabs
jtp.addTab("General",null,generalPane,"Choose General Options");
jtp.addTab("Design",null,designPane,"Design your own network!!");
jtp.addTab("Console",null,consolePane,"Type commands in console for designing");
jtp.addTab("Output",null,outputPane,"View output");
getContentPane().add(jtp, BorderLayout.CENTER);
//****END****
//This method is used to ad the buttons in the GridBagLayout of the Console tab
private void addComp( Component c,int row,int column,int width,int height)
// set gridx and gridy
consoleConstraints.gridx=column;
consoleConstraints.gridy=row;
//set gridwidth and grid height
consoleConstraints.gridwidth=width;
consoleConstraints.gridheight=height;
//set constraints
consoleLayout.setConstraints(c,consoleConstraints);
consoleContainer.add(c);
class TabManager implements ItemListener
Component tab;
public TabManager(Component tabToManage)
tab = tabToManage;
public void itemStateChanged(ItemEvent ie)
int index=jtp.indexOfComponent(tab);
if (index!=-1)
jtp.setEnabledAt(index,ie.getStateChange()== ItemEvent.SELECTED);
MainForm.this.repaint();
public static void main(String args[])
MainForm form = new MainForm();
form.setVisible(true);
}Thanks for the suggestions. I did away with the GridBagLayout Altogether :-D
and put all the buttons in a seperate JPanel and added that JPanel into the Console tabs container which was using a BorderLayout this time. Take a look
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class MainForm extends JFrame{
JTabbedPane jtp = new JTabbedPane();
public MainForm()
super("Welcome to Grey Griffin -- Network Simulator");
setSize(800,600);
setDefaultCloseOperation(EXIT_ON_CLOSE);
JPanel generalPane = new JPanel();
generalPane.setLayout(new BoxLayout(generalPane, BoxLayout.Y_AXIS));
JPanel consolePane = new JPanel();
consolePane.setLayout(new BoxLayout(consolePane, BoxLayout.Y_AXIS));
JPanel designPane = new JPanel();
designPane.setLayout(new BoxLayout(designPane, BoxLayout.Y_AXIS));
JPanel outputPane = new JPanel();
outputPane.setLayout(new BoxLayout(outputPane, BoxLayout.Y_AXIS));
//Setting up Layout for all the tabs
//**for the general tab
Container generalContainer;
FlowLayout layoutGeneral= new FlowLayout();
generalContainer = generalPane;
layoutGeneral.setAlignment(FlowLayout.CENTER);
generalContainer.setLayout( layoutGeneral );
//**for the console tab
Container consoleContainer;
consoleContainer = consolePane;
consoleContainer.setLayout(new BorderLayout() );
//Creating buttonpanel for adding the buttons
JPanel buttonPanel1 = new JPanel();
buttonPanel1.setLayout(new GridLayout(1,3));
JPanel buttonPanel2 = new JPanel();
buttonPanel2.setLayout(new GridLayout(1,3));
// All buttons / text areas / images are declared here
//**Buttons for the general tab**//
JButton generalCreate = new JButton("Create a New Network");
JButton generalOpen = new JButton("Open an Existing Network");
JButton generalSave = new JButton("Save the Network");
JButton generalSaveAs = new JButton("Save As..........");
JButton generalExit = new JButton("Exit");
//declaring the buttons
JButton consoleCompile = new JButton("Compile");
JButton consoleRun = new JButton("Run");
JButton consoleReset = new JButton("Reset");
JButton consoleOpen = new JButton("Open script files");
JButton consoleSave = new JButton("Save script files");
JButton consoleConvert = new JButton("Convert Script files to graphical form");
//declares the textarea where the code is written
JTextArea consoleCode = new JTextArea();
consoleCode.setEditable(true);
consoleCode.setMaximumSize(new Dimension(500,600));
consoleCode.setAlignmentX(0.0f);
//Adding buttons and text areas to there respective tabs
//**Buttons and text pads for the general tab**
generalContainer.add(generalCreate);
generalContainer.add(generalOpen);
generalContainer.add(generalSave);
generalContainer.add(generalSaveAs);
generalContainer.add(generalExit);
//adding buttons to the button panel 1
buttonPanel1.add(consoleOpen);
buttonPanel1.add(consoleSave);
buttonPanel1.add(consoleConvert);
//adding buttons to the button panel2
buttonPanel2.add(consoleRun);
buttonPanel2.add(consoleReset);
buttonPanel2.add(consoleCompile);
//adding button panels and textarea
consoleContainer.add(buttonPanel1,BorderLayout.NORTH);
consoleContainer.add(consoleCode,BorderLayout.CENTER);
consoleContainer.add(new JScrollPane(consoleCode));
consoleContainer.add(buttonPanel2,BorderLayout.SOUTH);
//adding the tabs
jtp.addTab("General",null,generalPane,"Choose General Options");
jtp.addTab("Design",null,designPane,"Design your own network!!");
jtp.addTab("Console",null,consolePane,"Type commands in console for designing");
jtp.addTab("Output",null,outputPane,"View output");
getContentPane().add(jtp, BorderLayout.CENTER);
class TabManager implements ItemListener
Component tab;
public TabManager(Component tabToManage)
tab = tabToManage;
public void itemStateChanged(ItemEvent ie)
int index=jtp.indexOfComponent(tab);
if (index!=-1)
jtp.setEnabledAt(index,ie.getStateChange()== ItemEvent.SELECTED);
MainForm.this.repaint();
public static void main(String args[])
MainForm form = new MainForm();
form.setVisible(true);
} -
JPanel won't display in BoxLayout when adding components in different order
For some reason when I run this code, the topPanel (made up of two panels which are all JLabels, JButtons, and JTextFields) does not display on the screen, but the investmentPanel (JTable within a JScrollPane) does. But when I add them in the reverse order, they both show up, but not in the order I want them to. The JPanel I am adding to is maximized so that shouldn't be an issue. Any thoughts of why this is happening?
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel topPanel = new JPanel();
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS));
topPanel.add(companyInfoPanel);
topPanel.add(tradePanel);
add(topPanel);
add(investmentPanel);Your best bet here is to show us your code. We don't want to see all of it, but rather you should condense your code into the smallest bit that still compiles, has no extra code that's not relevant to your problem, but still demonstrates your problem, in other words, an SSCCE (Short, Self Contained, Correct (Compilable), Example). For more info on SSCCEs please look here:
http://homepage1.nifty.com/algafield/sscce.html -
Here the SSCCE code for the prvious problem posted by me.
Following is the SSCCE code for the program of search which is having the problem i have asked before.
here when you run it will show a form which have a search button on it and when you press it a panel will shown below which have a table( it is just a bounded area without any column or row as i have removed the database functionality and we dont have to do with it).
the problem is the same that firstly i want to make the panel invisible.
(the blue and yellow colors are just to seperate the panel and the container) Secondly i want to remove the extra large space added below the last table and thirdly i want that on each press of the search button the scrollbar will focus on the new table added.
import javax.swing.*;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
public class Temp extends JFrame implements ActionListener
Container c;
Toolkit tk;
JLabel l1; int y=30;
JPanel p1,p2,p3;
JRadioButton rbByName,rbBySirName,rbByID,rbByCity,rbByState;
JButton btSearch,btView;
ButtonGroup bgSearch;
JTextField txtSearch; BoxLayout boxl;
ImageIcon i1;JScrollPane sp1;JViewport vp;
public Temp()
super("Search-Address Management System");
c=getContentPane();
tk=Toolkit.getDefaultToolkit();
setSize(1024,768);
c.setBackground(Color.BLUE);c.setLayout(null);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
defineComponents();
settingBounds();
addListeners();
addComponents();
setVisible(true);
public void defineComponents()
p1=new JPanel();
p1.setLayout(null);
p1.setOpaque(false);
p2=new JPanel();
p2.setLayout(null);
p2.setOpaque(false);
p3=new JPanel();
boxl=new BoxLayout(p3,BoxLayout.Y_AXIS);
p3.setLayout(boxl);
rbByName=new JRadioButton("First Name");
rbByName.setOpaque(false);
rbBySirName=new JRadioButton("Last Name");
rbBySirName.setOpaque(false);
rbByState=new JRadioButton("State");
rbByState.setOpaque(false);
rbByCity=new JRadioButton("City");
rbByCity.setOpaque(false);
rbByID=new JRadioButton("ID");
rbByID.setOpaque(false);
btSearch=new JButton("Search");
bgSearch=new ButtonGroup();
txtSearch=new JTextField();
btSearch=new JButton("Search");
TitledBorder tb=new TitledBorder("Search Criteria");
TitledBorder tb1=new TitledBorder("Search");
p1.setBorder(tb);
p2.setBorder(tb1);
public void settingBounds()
rbByID.setBounds(20,30,50,20);
rbByName.setBounds(120,30,100,20);
rbByState.setBounds(20,70,80,20);
rbByCity.setBounds(120,70,50,20);
rbBySirName.setBounds(240,30,100,20);
p1.setBounds(30,40,400,110);
p2.setBounds(30,180,400,80);
p3.setBackground(Color.ORANGE);
txtSearch.setBounds(50,210,250,25);
btSearch.setBounds(320,210,80,25);
rbByID.setSelected(true);
public void addListeners()
btSearch.addActionListener(this);
public void addComponents()
p1.add(rbByName);
p1.add(rbBySirName);
p1.add(rbByState);
p1.add(rbByCity);
p1.add(rbByID);
c.add(txtSearch);
c.add(btSearch);
c.add(p1);
c.add(p2);
bgSearch.add(rbByID);
bgSearch.add(rbByName);
bgSearch.add(rbBySirName);
bgSearch.add(rbByCity);
bgSearch.add(rbByState);
public void drawtable()
JTable t1=new JTable()
public Class getColumnClass(int column)
return getValueAt(0, column).getClass();
if(y==30) //as temporay variable only to add the scrollpane once
sp1=new JScrollPane(p3,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
sp1.setBounds(30,300,660,380);
c.add(sp1);
JScrollPane sp=new JScrollPane(t1);
sp1.getViewport().setOpaque(false); // to make the scrollpane transparent but not worked
sp.setMaximumSize(new Dimension(600,100));
p3.add(Box.createRigidArea(new Dimension(600,20)));// invisible filler to add space between two tables
p3.add(sp);
p3.revalidate();
y=y+110;
public void actionPerformed(ActionEvent e)
if(e.getSource()==btSearch)
drawtable();
public static void main(String args[])
new Temp();
}Please reply with the code required to be added.the problem is the same that firstly i want to make the panel invisible.If I remember you other postings I think you mean to say transparent, which means the background of its parent component will be painted. If you make the panel invisible, then all the component added to the panel will also be invisible.
You have a structure something like this:
main panel
- scroll pane
- viewport
- table panel
- table1
- table 2As you where told in one of you many other posting on this topic, if you want the background of the main panel to show through then you need to make all the component on top of the pane non-opaque, not just the viewport. So, the scroll pane and table panel also need to be changed.
And don't forget to reply to all your other postings on this topic stating that those postings are "closed" so people don't waste time answering in those postings. Keep the conversation in one posting so everybody knows what has been suggested. -
Add a JLabel below a JTextArea in a boxlayout
I have a JTextArea in a JScrollPane in a GUI, and I'm using BoxLayout. Occasionally, I wish to add a JLabel to my JScrollPane, which works fine.
However, since my BoxLayout is set to the Y_Axis layout, the JLabel always ends up being centered below the JTextArea, and I want it, as well as the JTextArea, to be aligned to the left. I know there is a LEFT_ALIGNMENT operator, but I am unsure of how to use it, although I've read the API for java.awt.Component.
Also, my JTextArea has a maximum column size, but when the JLabel is displayed, the JTextArea stretches across my entire JScrollPane window. I've tried setting a maximum size, but for some reason that tends to cut off some text on the left side of the JTextArea.
The JLabel will almost always be wider than the JTextArea. Perhaps that is causing some problems with BoxLayout?
If there's any more information I should provide, please let me know.
Thanks for any help you can provide,
Dan
Message was edited by:
DjaunlOk I figured out how the align the JLabel to the left:
myJLabel.setAlignmentX(Component.LEFT_ALIGNMENT);However, I'm having an odd problem with my JTextArea. If my GUI displays the text normally, everything is fine. But once I add a JLabel to my JScrollPane that is wider than the view (i.e. so I need to scroll horizontally to see the entire JLabel), when I load more text, the text will not position itself within the JScrollPane view, and I will have to scroll over to see all of the text, which I do not want to do.
Is there a way to keep the JTextArea at the same maximum column number, even though there is a JLabel below it that is much wider than the JTextArea should be?
I get the feeling this isn't making sense. Here's the code to create my components:
// Create min/max dimensions
Dimension minimumSize = new Dimension(200, 500);
Dimension maximumSize = new Dimension(500, 500);
Dimension buttonSize = new Dimension (125, 20);
int cols = 30;
// Create Tree viewing pane
JScrollPane treeView = new JScrollPane(tree);
treeView.setMinimumSize(minimumSize);
treeView.setMaximumSize(maximumSize);
// Create HTML viewing pane 1
final JPanel htmlView1 = new JPanel();
BoxLayout BL = new BoxLayout(htmlView1, BoxLayout.Y_AXIS);
htmlView1.setLayout(BL);
final JScrollPane htmlPane = new JScrollPane(htmlView1);
htmlPane.setMinimumSize(minimumSize);
htmlPane.setMaximumSize(maximumSize);
// Create text area1
final JTextArea textArea1 = new JTextArea();
textArea1.setLineWrap(true);
textArea1.setWrapStyleWord(true);
textArea1.setColumns(cols);
textArea1.setAlignmentX(Component.LEFT_ALIGNMENT);
JLabel pic = new JLabel (new ImageIcon(new URL(DBQuery.list.get(1))));
pic.setAlignmentX(Component.LEFT_ALIGNMENT);
htmlView1.add(pic);Later in the code, I add textArea1 to htmlView1.
I'm sorry if this is very confusing. If there is anything I can do to help, please let me know. -
Problem with JTextArea wanting to resize itself
First, here is a program that will create the situation in which this error occurs:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class Example extends JFrame
private final String TITLE = "Example";
private final int WIDTH = 640;
private final int HEIGHT = 480;
private JMenuBar menuBar = new JMenuBar();
private JMenu modeMenu = new JMenu( "Mode" );
private JMenuItem mode1 = new JMenuItem( "Mode 1" );
private JMenuItem mode2 = new JMenuItem( "Mode 2" );
private JTextArea textArea1 = new JTextArea();
private JTextArea textArea2 = new JTextArea();
private JScrollPane scrollPane1 = new JScrollPane( textArea1, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
private JScrollPane scrollPane2 = new JScrollPane( textArea2, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER );
private JPanel everything = new JPanel( new BorderLayout() );
private JPanel modeOptions = new JPanel();
private int modeInt = 1;
public Example ()
setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
setSize( WIDTH, HEIGHT );
setLocation( 100, 100 );
setResizable( true );
mode1.addActionListener( new ActionListener()
public void actionPerformed ( ActionEvent e )
modeInt = 1;
updateModeOptions();
mode2.addActionListener( new ActionListener()
public void actionPerformed ( ActionEvent e )
modeInt = 2;
updateModeOptions();
modeMenu.add( mode1 );
modeMenu.add( mode2 );
menuBar.add( modeMenu );
setJMenuBar( menuBar );
updateModeOptions();
initializeLayout();
private void updateModeOptions ()
modeOptions.removeAll();
switch ( modeInt )
case 1:
JLabel text = new JLabel( "Change to Mode 2 to see the text areas shrink." );
modeOptions.add( text );
setTitle( TITLE + " - " + "Mode 1" );
break;
case 2:
JPanel temp = new JPanel();
JLabel text = new JLabel( "Text in a JPanel, to show change in text area size." );
temp.add( text );
modeOptions.add( temp );
setTitle( TITLE + " - " + "Mode 2" );
break;
default:
break;
setVisible( true );
private void initializeLayout ()
JPanel panel1 = new JPanel( new BorderLayout() );
JPanel panel2 = new JPanel( new BorderLayout() );
JPanel everythingCenterPanel = new JPanel();
everything.setBorder( BorderFactory.createEtchedBorder() );
panel1.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Scroll Pane 1" ) );
panel2.setBorder( BorderFactory.createTitledBorder( BorderFactory.createEtchedBorder(), "Scroll Pane 2" ) );
everythingCenterPanel.setLayout( new BoxLayout( everythingCenterPanel, BoxLayout.Y_AXIS ) );
panel1.add( scrollPane1 );
panel2.add( scrollPane2 );
everythingCenterPanel.add( panel1 );
everythingCenterPanel.add( modeOptions );
everythingCenterPanel.add( panel2 );
everything.add( everythingCenterPanel );
add( everything );
public static void main ( String[] args )
new Example().setVisible( true );
}Try changing between Mode 1 and Mode 2 (via the Mode menu) to see how the text areas resize as the object between them grows and shrinks. This behavior is correct.
What is incorrect is what happens when the user enters a large amount of text into one of the text boxes (6 or 7 lines of text should be enough to create the problem) and switches between modes.
I've tried using the getSize and setSize methods of various components at various points in the program but none seem to work effectively. The closest thing I've been able to do is to keep the JTextAreas, the JScrollPanes, and the JPanels holding them to remain the same sizes, but the text still pushes the panel between the JTextAreas down (and possibly out of) the window, leaving a blank area between the edge of the JPanel containing the JScrollPane and the JPanel in the center.
The JPanels containing the JScrollPanes must be able to resize correctly as the user resizes the window, so a constant size would not work in this situation.
Any help is greatly appreciated.What is incorrect is what happens when the user enters a large amount of text into one of the text boxes I don't notice anything happening when I add text to the text area. The scrollbars appear as is expected. The only difference for me when I switch between mode 1 and 2 is that the center panel changes in size slightly. This is because the panel is using a FlowLayout which by default has a 5 pixel vertical gap between each component. This is easily fixed by using:
JPanel temp = new JPanel( new FlowLayout(FlowLayout.CENTER, 5, 0) );I know you tested using JDK1.5 since I had to make the following change in order to get the example to work:
getContentPane().add( everything );
So maybe this is a version problem since I don't notice anything out of the ordinary other than what I already mentioned.
Maybe you are looking for
-
Mozilla crashed presumably because my AVG PC tuneup utility wanted to come online. Mozilla has been "crashing' much more frequently now, but would be restorable to what I was doing in the past. This has really upset me. Yahoo mail typically saves wha
-
First Generation iPod Mini Pauses Between Songs
Hello, all! I have a first generation iPod Mini. I also have several albums that were designed to flow naturally from one song into the next with little to no break in between the songs. This does not come through in the iPod mini. There seems to be
-
PL/SQL development with JDeveloper
We are using Toad and JDeveloper to maintain our legacy IS that count thousands of PL/SQL code object (Packages, Package Bodies, Triggers). I'm using JDeveloper and SQL Developer in the perspective to verify if it is possible and effective to use onl
-
Hi, During creation of an Outbound Delivery from Stock Transfer, I am getting delivery quantities in decimals... Is there a way to round these decimal values? For example, I have a material with the UOM defined for Delivery/Goods Issuance as Case of
-
Why are my files not opening in PS, when I select "edit in ps" ?
The external editor is Photoshop CC 2014 (PSD, Profoto, 16bit, 300ppi). When I select edit in ps, ps opens but the file does not. I suspect that I changed a preference somehow in the process of setting up the radial menu for my wacom tablet, or wh