Javax.swing.GroupLayout
Hi
I have used Netbeans 7 to design my UI screens which uses jdk1.6, but i need to port it to jdk1.4..
how can i make these changes?
user7041221 wrote:
I have used Netbeans 7 to design my UI screens which uses jdk1.6, but i need to port it to jdk1.4..
how can i make these changes?Display the form in "Design" mode, right click the "Form" node in the "Inspector" window and set the property "Layout Generation Style" to "Swing Layout Extensions Library". Select the source level and java platform in the project properties window (File | Project Properties).
Cheers,
André
Similar Messages
-
JDeveloper 11g javax.swing.GroupLayout
Does JDeveloper 11g support the Swing class javax.swing.GroupLayout ?
I did not see this class in the layout combo, and when I edited in the source code, I got an error:
Field groupLayout not found in class oracle.jdevimpl.uieditor.proxy.JPanel
Thanks a lot.
JohnHi,
its a Java 6 feature and I am afraid to say that we didn't upgrade Swing to Java 6 in this release
Frank -
Where is javax.swing.GroupLayout Class....?
In the Java 6 Doc I am getting the information about javax.swing.GroupLayout class. But I cpuld not find the class in Jar.
Am I missing something?
It will be appriciated If you help me to finding the Jar file for this class.
Thanks.Thanks for help.
I have got it. As I am using beta version of Java6 in which that class was missing. In the latest version of JDK , I have found that class. -
Javax.swing.GroupLayout - problem
Hi
Puzzling problem has occurred when developing the same application on different PC�s and using the same IDE (Netbeans 5.5) on both.
The problem is that the �javax.swing.GroupLayout� class is being used when inserting netbeans GUI components on one of the PC�s. However, the other PC uses �org.jdesktop.layout.GroupLayout� and generates an error when trying to compile the �javax.swing.GroupLayout� components. It cannot find the javax.swing.GroupLayout� class.
The jdk is jdk 6 for both.
Can anyone shed any light on this?
Regards
GBDid you check the project properties?
Project properties | Categories: Libraries --> Java Platform: JDK 1.6
(javax.swing.GroupLayout works only with 1.6) -
I cant see GroupLayout in javax.swing.
What i doing wrong?
Thanksjavax.swing.GroupLayout is since version 1.6.
{color:#000080}If you are getting an error when trying to import the class, you have an earlier version of the jdk.
If you cannot see the class in the documentation, you are referring to the documentation for an earlier version.{color}
http://java.sun.com/javase/6/docs/api/javax/swing/GroupLayout.html
{color:#000080}db{color} -
Swing GroupLayout Error()
Hello,
I have an exception in my Japplet and i can`t find the problem. Can somebody find the exception.
Thanks in advance
Bart
This is the exception:
Exception in thread "main" java.lang.IllegalArgumentException: Component must be non-null
at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2878)
at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2858)
at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1490)
at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2414)
at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2384)
at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1471)
at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2406)
My Code:
package gui;
import javax.swing.*;
import java.awt.*;
public class Gui extends JPanel {
* File: Gui.java
* Version: 1.0
* Description: The Gui of a simple spot editing tool for the web.
* @author Bart
* Date: 30-10-2008
@SuppressWarnings("unchecked")
private JButton btnPost;
private JLabel lblSpotter;
private JLabel lblDatum;
private JLabel lblTijd;
private JLabel lblVogelsoort;
private JLabel lblLocation;
private JLabel lblFoto;
private JLabel lblCommentaar;
private JLabel sl1;
private JLabel sl2;
private JLabel dp1;
private JTextField inputSpotter;
private JTextField inputDag;
private JTextField inputUur;
private JTextField inputVogelsoort;
private JTextField inputMaand;
private JTextField inputJaar;
private JTextField inputMin;
private JTextField inputLocAB;
private JTextField inputLoc1234;
private JTextField inputLoc5678;
private JTextArea inputCommentaar;
private JScrollPane jScrollPane1;
* Method: Constructor Gui
* Description:
public Gui() {
* Method: Constructor Gui
* Description:
private void init() {
this.setVisible(true);
//buttons
btnPost = new JButton("Verzend");
//labels
lblSpotter = new JLabel("Spotter: ");
lblDatum = new JLabel("Datum: ");
lblTijd = new JLabel("Tijd: ");
lblVogelsoort = new JLabel("Vogelsoort: ");
lblLocation = new JLabel("Location: ");
lblCommentaar = new JLabel("Commentaar: ");
sl1 = new JLabel("/");
sl2 = new JLabel("/");
dp1 = new JLabel(":");
//textfields & areas & scrollpane
inputSpotter = new JTextField();
inputDag = new JTextField();
inputUur = new JTextField();
inputVogelsoort = new JTextField();
inputMaand = new JTextField();
inputJaar = new JTextField();
inputMin = new JTextField();
inputLocAB = new JTextField();
inputLoc1234 = new JTextField();
inputLoc5678 = new JTextField();
inputCommentaar = new JTextArea();
inputCommentaar.setColumns(20);
inputCommentaar.setRows(5);
jScrollPane1 = new JScrollPane();
jScrollPane1.setViewportView(inputCommentaar);
//grouplayout & adding labels,textfields,textareas to layout
GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lblCommentaar)
.addGroup(layout.createSequentialGroup()
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lblVogelsoort)
.addComponent(lblLocation)
.addComponent(lblTijd)
.addComponent(lblDatum)
.addComponent(lblSpotter)))
.addComponent(lblFoto))
.addGap(7, 7, 7)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.TRAILING, false)
.addGroup(GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(inputDag)
.addComponent(inputUur, GroupLayout.DEFAULT_SIZE, 57, Short.MAX_VALUE))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(sl1)
.addComponent(dp1))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(inputMin, GroupLayout.DEFAULT_SIZE, 61, Short.MAX_VALUE)
.addComponent(inputMaand))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sl2)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(inputJaar))
.addComponent(jScrollPane1, GroupLayout.Alignment.LEADING)
.addGroup(GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
.addComponent(inputLocAB, GroupLayout.PREFERRED_SIZE, 53, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(inputLoc1234, GroupLayout.PREFERRED_SIZE, 63, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(inputLoc5678))
.addComponent(inputSpotter, GroupLayout.Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 189, Short.MAX_VALUE)
.addComponent(inputVogelsoort, GroupLayout.Alignment.LEADING)
.addComponent(btnPost))
.addContainerGap(31, Short.MAX_VALUE))
layout.setVerticalGroup(
layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(26, 26, 26)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblDatum)
.addComponent(inputDag, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(inputMaand, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(inputJaar, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(inputLocAB)
.addComponent(inputLoc1234)))
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblSpotter)
.addComponent(inputSpotter, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblTijd)
.addComponent(inputUur, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(inputMin, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(dp1))
.addGap(7, 7, 7)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblVogelsoort)
.addComponent(inputVogelsoort, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(lblLocation)
.addComponent(inputLocAB, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(inputLoc1234, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addComponent(inputLoc5678, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
.addComponent(lblCommentaar)
.addComponent(jScrollPane1, GroupLayout.PREFERRED_SIZE, 78, GroupLayout.PREFERRED_SIZE))
.addGap(6, 6, 6)
.addComponent(lblFoto)
.addGap(21, 21, 21)
.addComponent(btnPost)
.addContainerGap())
* Method: Start
* Description:
public void start() {
* Method: Stop
* Description:
public void Stop() {
* Method: Destroy
* Description:
public void destroy() {
public static void main(String args[]){
Gui gui = new Gui();
gui.init();
}I`ve changed JPanel into JApplet and init() into go() ,and start(),destroy() and stop() are disabled.
But at the end i want to have the applet into a webbrowser. And i can`t find the error, GroupLayout layout - new GroupLayout(this) seems good in my vision. The error is on the "this" part, is it possible to give the this a value?
Complete Exception
Exception in thread "main" java.lang.IllegalArgumentException: Component must be non-null
at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2878)
at javax.swing.GroupLayout$ComponentSpring.<init>(GroupLayout.java:2858)
at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1490)
at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2414)
at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2384)
at javax.swing.GroupLayout$Group.addComponent(GroupLayout.java:1471)
at javax.swing.GroupLayout$ParallelGroup.addComponent(GroupLayout.java:2406)
at gui.Gui.init(Gui.java:98)
at gui.Gui.main(Gui.java:212)
Java Result: 1Thanks in advance,
Bart -
Cannot find class javax.swing.JOptionPane
Hello,
I imported the class
import javax.swing.JOptionPane;and written as a first line of my code in the form of a .java file.
but error occurs as : cannot find the class javax.swing.JOptionPane. What should I do.
Thank you.Are you doing something likeimport javax.swing.JOptionPane;
class Test {
public static void main(String args[]) {
JOptionPane.showMessageDialog(null, "Testing",
"Testing", JOptionPane.INFORMATION_MESSAGE);
}Mark -
Multiple Fonts in a javax.swing.JTextPane
I am trying to use multiple fonts in a JTextPane, but can only find ways of changing the font family used. Can anyone give me any pointers on how to do this, or a document somewhere that explains, either way with out going into the javax.swing.text.html, javax.swing.text.html.parser or java.awt.font packages.
Any information that can be provided would be appreciated.
Thanks,
NathanJust use SimpleAttributeSet like :
SimpleAttributeSet defaultSet = new SimpleAttributeSet();
StyleConstants.setForeground( defaultSet, Color.BLACK );
StyleConstants.setFontFamily( defaultSet, "Verdana" );
StyleConstants.setFontSize( defaultSet, 14 );
SimpleAttributeSet navigationSet = new SimpleAttributeSet();
StyleConstants.setForeground( navigationSet, new Color(00, 99, 00) );
StyleConstants.setBold( navigationSet, true );
StyleConstants.setFontFamily( navigationSet, "Verdana" );
StyleConstants.setFontSize( navigationSet, 11 );
// just defiine endPoints what ever you want
((DefaultStyledDocument)textPane.getDocument()).setCharacterAttributes(0, endPoint1, defaultSet , true)
((DefaultStyledDocument)textPane.getDocument()).setCharacterAttributes(0, endPoint2, navigation , true) -
Variable textArea not found in class javax.swing.JFrame...
Making progress on this issue -- but still stuck. Again trying to get the text from a JTextArea on exit:
frame.addWindowListener
(new WindowAdapter() {
public void windowClosing(WindowEvent e)
System.out.println("Why me???" + frame.textArea.getText());
});User MARSIAN helped me understand the scope fo the variables and now that has been fixed. Unfortunately I cannot access my variable textArea in the above code. If get this error:
Error: variable textArea not found in class javax.swing.JFrame
What am I doing wrong?
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import FragImpl.*;
public class Framework extends WindowAdapter {
public int numWindows = 0;
private Point lastLocation = null;
private int maxX = 500;
private int maxY = 500;
JFrame frame;
public Framework() {
newFrag();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
maxX = screenSize.width - 50;
maxY = screenSize.height - 50;
makeNewWindow();
public void makeNewWindow() {
frame = new MyFrame(this); //*
numWindows++;
System.out.println("Number of windows: " + numWindows);
if (lastLocation != null) {
//Move the window over and down 40 pixels.
lastLocation.translate(40, 40);
if ((lastLocation.x > maxX) || (lastLocation.y > maxY)) {
lastLocation.setLocation(0, 0);
frame.setLocation(lastLocation);
} else {
lastLocation = frame.getLocation();
System.out.println("Frame location: " + lastLocation);
frame.setVisible(true);
frame.addWindowListener
(new WindowAdapter() {
public void windowClosing(WindowEvent e)
System.out.println("Why me???" + frame.textArea.getText());
//This method must be evoked from the event-dispatching thread.
public void quit(JFrame frame) {
if (quitConfirmed(frame)) {
System.exit(0);
System.out.println("Quit operation not confirmed; staying alive.");
private boolean quitConfirmed(JFrame frame) {
String s1 = "Quit";
String s2 = "Cancel";
Object[] options = {s1, s2};
int n = JOptionPane.showOptionDialog(frame,
"Windows are still open.\nDo you really want to quit?",
"Quit Confirmation",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE,
null,
options,
s1);
if (n == JOptionPane.YES_OPTION) {
return true;
} else {
return false;
private void newFrag()
Frag frag = new FragImpl();
public static void main(String[] args) {
Framework framework = new Framework();
class MyFrame extends JFrame {
protected Dimension defaultSize = new Dimension(200, 200);
protected Framework framework = null;
private Color color = Color.yellow;
private Container c;
JTextArea textArea;
public MyFrame(Framework controller) {
super("New Frame");
framework = controller;
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(defaultSize);
//Create a text area.
textArea = new JTextArea(
"This is an editable JTextArea " +
"that has been initialized with the setText method. " +
"A text area is a \"plain\" text component, " +
"which means that although it can display text " +
"in any font, all of the text is in the same font."
textArea.setFont(new Font("Serif", Font.ITALIC, 16));
textArea.setLineWrap(true);
textArea.setWrapStyleWord(true);
textArea.setBackground ( Color.yellow );
JScrollPane areaScrollPane = new JScrollPane(textArea);
//Create the status area.
JPanel statusPane = new JPanel(new GridLayout(1, 1));
ImageIcon icoOpen = null;
URL url = null;
try
icoOpen = new ImageIcon("post_it0a.gif"); //("doc04d.gif");
catch(Exception ex)
ex.printStackTrace();
System.exit(1);
setIconImage(icoOpen.getImage());
c = getContentPane();
c.setBackground ( Color.yellow );
c.add ( areaScrollPane, BorderLayout.CENTER ) ;
c.add ( statusPane, BorderLayout.SOUTH );
c.repaint ();
}Yeah!!! It works. Turned out to be a combination of DrKlap's and Martisan's suggestions -- had to change var frame's declaration from JFrame to MyFrame:
MyFrame frame;Next, created the external class -- but again changed JFrame references to MyFrame:
public class ShowOnExit extends WindowAdapter {
// JFrame aFrame;
MyFrame aFrame;
public ShowOnExit(MyFrame f) {
aFrame = f;
public void windowClosing(WindowEvent e)
System.out.println("Why me???" + aFrame.textArea.getText()); // aFrame here not frame !!!
}This worked. So looks like even though the original code added a WindowListener to 'frame', the listener didn't couldn't access frame's methods unless it was explicitly passed in as a parameter. Let me know if that's wrong.
Thanks again, all. -
Import javax.swing.*;
I start my programm with:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import rechenwerk.Rechenwerk; import rechenwerk.RechenwerkFassade;
import zahl.Zahl; import zahl.ZahlFassade;
import oberflaeche.Oberflaeche;
At "import javax.swing.*" i get the failure message from the compiler:
Oktalrechner.java:8: Package javax.swing not found in import.
import javax.swing.*;
What is wrong? I don't know-please help me.
I'm using JDK1.2BETA4Tell me when you execute java -version, what you are getting?
Looks like you are suing old JDK.
Download the latest public release JDK1.4 from http://java.sun.com
/Sreenivasa Kumar Majji.
Did somebody help you? I have a similar problem with
javax.resource... :(
I start my programm with:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import rechenwerk.Rechenwerk; import
rechenwerk.RechenwerkFassade;
import zahl.Zahl; import zahl.ZahlFassade;
import oberflaeche.Oberflaeche;
At "import javax.swing.*" i get the failure message
from the compiler:
Oktalrechner.java:8: Package javax.swing not foundin
import.
import javax.swing.*;
What is wrong? I don't know-please help me.
I'm using JDK1.2BETA4 -
Javax.swing.tree.DefaultMutableTreeNode
I have a tree with some nodes in it.
I am using setAllowsChildren(boolean x) method of javax.swing.tree.DefaultMutableTreeNode on the nodes.
But the problem i m facing is
1....if setAllowsChildren() method returns true ,i m getting tree icon displayed on side of node(irrespective of whether the node has children or not )
I m facing with a challenge of allowing node to have children by using
setAllowsChildren(true) and at the same time display tree icon only when children are present.
Some of my friends say it is a java bug.
If not how do i go about solving this one.
Thanks in advanceOk i will put it in another way.
Is there any other way by which the tree icon can be made to display
without the usage of[b] setAllowsChildren() method -
Import javax.swing.JOptionPane
hello
i just installed j2sdk1.3.1 into my redhat linux7.3, during installation, everything's fine...
but when i start to compile a program with some import classes...i face the problem :
cannot find type "javax/swing/JOptionPane
this is my program :
import javax.swing.JOptionPane;
public class Welcome{
public static void main(String args[])
JOptionPane.showMessageDialog(null,"Hello");
System.exit(0);
can anybody help me with this problem......?...thankstype
java -versionto see which version of the JVM you are running
you could also try
which javato see the actuall executable that you are running. -
Javax.swing.filechooser.FileFilter
Does anybody know why javax.swing.filechooser.FileFilter is an abstract class
instead of an interface extending java.io.FileFilter ?
GordanYeh - and while we are on the subject, why doesnt it implement java.io.FileFilter so you can use the same filter for the filechooser as you do for listing files? </bangheadagainstwall>
-
UIManager.look and feel buttons or javax.swing
Hey,
i want to use the ok, cancel etc. button that you get in a JFileChooser or a JOptionPane.
Can they be found in the UIManager or in the javax.swing?
i tried to extract them from the JFileChooser by:
JFileChooser chooser = new JFileChooser("/"); //Linux
JPanel mypanel = new JPanel();
mypanel.add(chooser.getComponentAt(2)); //the button panelthis works, but i don't know how to overwrite the actionlistener to make the buttons listen to my actionlistener.
thanks in advance
Grad_It returns an int value according to what button was clicked
http://72.5.124.55/docs/books/tutorial/uiswing/components/filechooser.html
http://java.sun.com/developer/JDCTechTips/2004/tt0316.html -
Import javax.swing problems
hey
I am new to java and have recently downloaded j2sdk1.4.2_04. I am trying to create a simple graphical application. However, It doesnt seem to import the javax.swing.* libraries. I understand that there is the src.zip in the directory, so I unzipped it but it still doesn't read the package. I read elsewhere on this forum that you should set the path to src.zip. I have tried that and it also doesnt work. My current path is:
PATH=C:\j2sdk1.4.2_04\lib\src.zip;C:\j2sdk1.4.2_04\bin
Is there an error in this, or what else should I try? All suggestions greatly appreciated.There's no need to set your classpath when importing any of the standard packages that are provided by the JDK. Perhaps you could post a (small) code sample and the compiler error you are getting.
Maybe you are looking for
-
Billing document and Excise invoice document number should be same
Dear SD gurus kindly help me following client requirement in order to cash (domestic & Exports) and sto (intra and Inter plant to plant) scenarios the billing document number and excise invoices number should trigger same number Example order- deliv
-
I have a macPro 10.6.8. i have been receiving mail with the same date--March 14 and the same time--8:51am..I cannot correct:who knows the solution? Thank you.
-
Failing to update applicatio​ns?
Hey, I've got a Tour, and have just downloaded Desktop for Mac. I'm getting the following error when I try to manipulate/update applications: Blackberry Desktop Manager failed to validate your Blackberry device update. Validation failed because a mo
-
How to call a stored procedure on time basis with out using sql job and GOTO
Hi, I wanted to call a stored proc, on time basis , please tel me how it can be done with out using sql job , goto . 1) That is, is there any timer aviable in sqlserver. q2) And which one is better GOTO or sql job. yours sincerley
-
Hi Is there any toturial in order to create a table in web Dynpro? which the user will be able to update through the web application. thanks