bom dia, gostaria de saber se tem como fazer vários arquivos com componentes swing e importar eles para uma pagina depois, tipo, criar uma class menu, depois criar uma classe formulário, etc e depois na tela q será exibida estar o menu e o formulário junto, não tenho código de teste para exibir porque é só uma duvida que tenho que facilitaria bastante na manutenção de códigos futuros
Sim, é a forma mais legal de se desenvolver telas desktop.
Facilita muito a manutenção.
teria algum exemplo de como fazer isso?
eu testando agora ate que consegui fazer, porem não consegui definir a posição do item importado na tela
import java.awt.Color;
import javax.swing.JPanel;
public class principal extends javax.swing.JFrame{
public principal() {
this.setSize(400,400);
JPanel pane = new JPanel();
this.add(pane);
pane.setBackground(new Color(0,0,0));
pane.setBounds(150,150,200,50);
pane.add(new op1());
}
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new principal().setVisible(true);
}
});
}
}
em cima o jframe que exibe o conteúdo da GUI e abaixo o conteúdo exibido pela GUI
import javax.swing.JButton;
import javax.swing.JPanel;
public class op1 extends javax.swing.JPanel{
public op1() {
JButton button = new JButton("test");
this.add(button);
this.setVisible(true);
}
}
Utilize os gerenciadores de layout apropriados ou vá fazendo com o setBounds
gerenciadores de layout não acho tão legal porque não consigo definir com exatidão o tamanho e posição de exibição das coisas na tela, não sei se é algum conhecimento que me falta mas os gerenciadores sobrepõe as minhas vontade kkk, e o setBounds já o defini tanto no arquivo principal como no arquivo de JPanel e ele não sai do centro
Sim, lhe falta o conhecimento de como eles funcionam.
É que os containers já possuem um gerenciador de layout pré-definido, por exemplo o contentPane
do JFrame
vem com BorderLayout
e o JPanel
vem com FlowLayout
.
O setBounds
de um componente só vai surtir efeito se o container onde ele for inserido estiver com layout null
.