Я тестирую, как много времени ставит компоненты в панель. В качестве примера тестирования я помещаю несколько компонентов в jPanel. Я ищу более быстрый способ разместить их. Вот мой тестовый код:Самый быстрый способ добавления компонентов в Jpanel
import java.awt.*;
import javax.swing.*;
public class MyPane {
JFrame Myframe;
JPanel Mypanel;
public void createUI()
{
Myframe = new JFrame("Test clicks");
Mypanel = new JPanel();
Myframe.setPreferredSize(new Dimension(600, 600));
Myframe.setMinimumSize(new Dimension(600, 600));
Myframe.add(Mypanel);
Myframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Myframe.setVisible(true);
//ADD 100+1 LABELS
long start_time = System.nanoTime();//START TIME
for (int i=0; i<100 ; i++){
JLabel myLabel= new JLabel();
myLabel.setText("label"+ i);
Mypanel.add(myLabel);
}
long end_time = System.nanoTime(); //START TIME
double difference = (end_time - start_time)/1000000;
//ADD EXECUTION TIME LABEL
JLabel MyInfo= new JLabel();
MyInfo.setText("milliseconds:"+ difference);
MyInfo.setBackground(Color.yellow);
MyInfo.setOpaque(true);
Mypanel.add(MyInfo);
Myframe.pack();
}
public static void main(String[] args) {
MyPane overlapPane = new MyPane();
overlapPane.createUI();
}
}
В моем компьютере добавление 1000 JLabels занимает 120 millliseconds. Конечно, время выполнения может сильно различаться в зависимости от аппаратного обеспечения, Os и т. Д.
Мой вопрос: есть ли более быстрый способ разместить многие компоненты в панели. Есть ли способ, например, разместить все сразу? Разве это имеет значение?
EDIT: Я хотел бы уточнить, что создание 1000 ярлыков один за другим не является тем, чего я пытаюсь достичь в любом реальном программном обеспечении, которое я разрабатываю, хотя я имею на это право. Это всего лишь пример, и я знаю, что в некоторых случаях могут быть более эффективные способы отображения большого количества текстовой информации на экране. Кроме того, мой вопрос заключается не в оптимизации программного обеспечения в целом, а только в тестировании этого конкретного алгоритма.
Я думаю, что это довольно бессмысленный вопрос без дополнительного контекста. Например, добавьте один 'JList', состоящий из 1000 элементов с рендером ячеек по умолчанию (который может использовать один JLabel), и вы можете обнаружить, что это намного быстрее. Но даже без этого, действительно ли это является узким местом в приложении? –
@ Андрей Томпсон. Я упростил случай, чтобы увидеть, как добавление компонентов влияет на производительность. – geo
Иногда случаи могут быть упрощенными, и я думаю, что это произошло здесь, если это было непонятно. –