У меня есть класс BaseWindow с основным фреймом JFrame и множество методов, которые работают на mainFrame. Фактические окна в моем приложении выполняются путем расширения BaseWindow.Как я могу заставить Eclipse WindowBuilder разобрать унаследованный JFrame?
Класс, расширяющий BaseWindow, наследует mainFrame, и это как-то мешает оконному строителю «видеть» его при анализе кода. Все, что я вижу на вкладке дизайна конструктора окна, - это пустое окно, но когда я запускаю код, все работает нормально.
Как я могу сделать этот подход работать с конструктором окна или конструктором окон «trick» в разборе mainFrame? Ниже приведен пример класса расширения BaseWindow:
package GUIApp;
//took out the imports to save space
class SampleWindowOne extends BaseWindow{
public JLabel txtSampleText;
public JButton btnMagicButton;
public SampleWindowOne() {
initialize();
}
public void run(){
mainFrame.setBounds(getCenteredBounds());
mainFrame.setVisible(true);
}
private void initialize() {
mainFrame = new JFrame();
mainFrame.setBounds(100,100,700,525);
mainFrame.setTitle("Sample Window One");
mainFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
mainFrame.getContentPane().setLayout(null);
txtSampleText = new JLabel();
txtSampleText.setFont(new Font("Dialog", Font.PLAIN, 25));
txtSampleText.setHorizontalAlignment(SwingConstants.CENTER);
txtSampleText.setText("Sample Window");
txtSampleText.setBounds(12, 50, 674, 51);
mainFrame.getContentPane().add(txtSampleText);
JTextArea txtrLoremIpsumDolor = new JTextArea();
txtrLoremIpsumDolor.setEditable(false);
txtrLoremIpsumDolor.setFont(new Font("Dialog", Font.PLAIN, 16));
txtrLoremIpsumDolor.setForeground(Color.DARK_GRAY);
txtrLoremIpsumDolor.setWrapStyleWord(true);
txtrLoremIpsumDolor.setLineWrap(true);
txtrLoremIpsumDolor.setText("Lorem ipsum dolor sit amet...");
txtrLoremIpsumDolor.setBounds(57, 131, 609, 296);
mainFrame.getContentPane().add(txtrLoremIpsumDolor);
btnMagicButton = new JButton("End Program");
btnMagicButton.setEnabled(false);
btnMagicButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
requestTerminate();
}
});
btnMagicButton.setBounds(257, 451, 175, 25);
mainFrame.getContentPane().add(btnMagicButton);
}
}
'txtrLoremIpsumDolor.setBounds (57, 131, 609, 296);' ?? –
Примечание. Я не использую оконные сборщики, но я делаю много кодирования Swing, и эта строка выше никогда не должна присутствовать, потому что она ограничивает естественное поведение JTextArea. JTextAreas принадлежат JScrollPanes и таким образом ограничивают его размер, вы предотвращаете расширение текстовой области - это означает, что полосы прокрутки никогда не будут работать. Я предлагаю вам отказаться от использования разработчиков окон, пока вы не поймете базовую библиотеку лучше. –
Хорошая информация, на воздушной подушке. Я определенно мог бы извлечь выгоду из более глубокого понимания Swing, но на данный момент мне просто нужно снова использовать возможности дизайна WYSIWYG. Я пишу код для класса, в котором дизайн GUI, который мы изучали до сих пор, очень рудиментален и исключительно сделан через оконный строитель, поэтому мои члены группы и я вроде как должны иметь возможность использовать ее для текущего проекта. – jgardner7289