То, что вы пытаетесь сделать, не сработает, потому что вы пытаетесь преобразовать переменную в код PHP. PHP не знает, что это ваше намерение, и не выполняет этот код.
PHP имеет конструкцию eval()
, которая позволяет вам сделать это.
Внимание. Языковая конструкция eval () очень опасна, поскольку она позволяет выполнять произвольный код PHP. Таким образом, его использование не рекомендуется. Если вы тщательно проверили, что нет другого выбора, кроме как использовать эту конструкцию, обратите особое внимание на то, чтобы не передавать какие-либо данные, предоставленные пользователем, без надлежащей проверки их заранее.
blockquote>Руководство по PHP для для eval объясняет больше.
Оценить строку как код PHP
blockquote>В вашем случае будет работать следующий код.
$nested_array_selectors = '["my_array"]["my_key"]["my_elemnt"]'; eval('var_dump($my_instance->my_object' . $nested_array_selectors . ')');
Я заставил это работать теперь с небольшой справкой коллеги. В основном у меня теперь есть поле, которое указывает, подкачать ли высоту/ширину, которая только активна в течение времени когда оригинал JLabel
делает его рисование.
private boolean needsRotate;
@Override
public Dimension getSize() {
if (!needsRotate) {
return super.getSize();
}
Dimension size = super.getSize();
switch (getDirection()) {
case VERTICAL_DOWN:
case VERTICAL_UP:
return new Dimension(size.height, size.width);
default:
return super.getSize();
}
}
@Override
public int getHeight() {
return getSize().height;
}
@Override
public int getWidth() {
return getSize().width;
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D gr = (Graphics2D) g.create();
switch (getDirection()) {
case VERTICAL_UP:
gr.translate(0, getSize().getHeight());
gr.transform(AffineTransform.getQuadrantRotateInstance(-1));
break;
case VERTICAL_DOWN:
gr.transform(AffineTransform.getQuadrantRotateInstance(1));
gr.translate(0, -getSize().getWidth());
break;
default:
}
needsRotate = true;
super.paintComponent(gr);
needsRotate = false;
}
Я думаю, что это выключено, потому что Вы переводите о неправильной точке.
размер объекта зависит, на каком контейнере у Вас есть это в, поэтому в то время как Ваш предпочтительный размер мог бы быть тем, что Вы хотите, Ваш фактический размер не?
если у Вас есть эта маркировка в ЦЕНТРЕ BorderLayout, размер всегда является полным размером контейнера (минус north+south высота минус east+west ширина)
разве Вы не должны переводить о фактическом размере, не предпочтенном размере?