Я пытаюсь создать jtable
класс пользователей pojo
. Пользователь создает pojo
класс, я загружаю его во время выполнения и создаю jtable
. Помогите, пожалуйста, как мне этого добиться?
String loadedClass = array.getJSONObject( 0 ).getString( "value" );
Class customFilterClass = new LoaderDynClass( getContext(), pack ).loadClass( loadedClass, true );
customFilterClass - тип класса пользователей
StringReader reader = new StringReader( filterList );
//customFilterClass extent FilterTableModel. FilterTableModel parent abstract class
List<FilterTableModel> filterTableModelList = objectMapper.readValue( reader, new TypeReference<List<FilterTableModel>>(){} );
Я могу сделать это с помощью reflection
API, но я не знаю, как получить List<UserClass> list
. И как указать тип моего List<???>
Извините за мой engli sh))
BGUTable table = (BGUTable) component;
ObjectMapper objectMapper = new ObjectMapper( );
objectMapper.disable( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
objectMapper.setVisibilityChecker( VisibilityChecker.Std.defaultInstance().withFieldVisibility( JsonAutoDetect.Visibility.ANY));
JSONArray array = fieldsJsonObject.optJSONArray( key );
String loadedClass = array.getJSONObject( 0 ).getString( "value" );
String filterList = array.getJSONObject( 1 ).getString( "value" );
Class customFilterClass = null;
try
{
String pack = loadedClass.substring( 0, loadedClass.lastIndexOf( "." ) );
customFilterClass = new LoaderDynClass( getContext(), pack ).loadClass( loadedClass, true );
}
catch( ClassNotFoundException ex )
{
ClientUtils.showErrorMessageDialog( ex );
}
StringReader reader = new StringReader( filterList );
try
{
List filterTableModelList = objectMapper.readValue( reader, new TypeReference<List>(){} );
Object[] objects = new Object[filterTableModelList.size()];
List<Field> fieldsList = new ArrayList<>();
for( int x =0; x < objects.length; x++ )
{
try
{
Field[] fields = customFilterClass.getDeclaredFields();
for( int i = 0; i < fields.length; i++ )
{
fieldsList.add( fields[i] );
}
objects[x] = customFilterClass.getDeclaredConstructor( fields[0].getType(), fields[1].getType(), fields[2].getType() ).newInstance( 77,"asdasd", 12 );
}
catch( InstantiationException e )
{
e.printStackTrace();
}
catch( IllegalAccessException e )
{
e.printStackTrace();
}
catch( InvocationTargetException e )
{
e.printStackTrace();
}
catch( NoSuchMethodException e )
{
e.printStackTrace();
}
}
List<FilterTableModel> list = new ArrayList<>();
for(int z = 0; z < objects.length; z++)
{
list.add( (FilterTableModel)objects[z] );
}
BGTableModel<FilterTableModel> model = new BGTableModel<FilterTableModel>("")
{
@Override
protected void initColumns()
{
for( int x = 0; x < fieldsList.size(); x++ )
{
addColumn( fieldsList.get( x ).getName(), fieldsList.get( x ).getType(), false );
}
}
@Override
public Object getValue( FilterTableModel val, int columnId)
throws BGException
{
FilterTableModel filterTableModel = val;
String data = filterTableModel.getCorrectData( columnId );
if ( data != null )
{
return data;
}
return super.getValue( val, columnId );
}
};
table.setModel( model );
model.setData( list );
}
catch( IOException e )
{
ClientUtils.showErrorMessageDialog( e );
}
этот тестовый вариант, потому что я понятия не имею, что делать