L'idée principale est de dessiner une forme spécifique, en utilisant la bibliothèque Swing (elle sera utilisée pour générer une image, qui sera transférée à une imprimante escpos, mais c'est une autre question). Le formulaire lui-même a un conteneur pleine largeur en haut, qui représente l'étiquette. L'étiquette a une police personnalisée, taille de police et peut avoir un linewrap, par conséquent j'ai utilisé JTextPane. L'élément JTextPane et tout le formulaire auront une taille fixe de 500 px.Obtenir la hauteur du contenu de JTextPane
En test, le code ressemble à:
JFrame fr = getFrame();
JPanel root = new JPanel(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
JPanel titleP = new JPanel(new BorderLayout());
titleP.setBorder(BorderFactory.createTitledBorder("titleP"));
c.fill = GridBagConstraints.BOTH;
c.gridy = 0;
c.gridx = 0;
c.gridwidth = 8;
c.weightx = 1.0f;
c.weighty = 1.0f;
JTextPane tp = new JTextPane();
JScrollPane sp = new JScrollPane(tp);
Font font = new Font("Arial",Font.BOLD, 37);
tp.setFont(font);
tp.setText("fdsfdsf sdf sdf sd fdsfsdf sdf sd fsd fdsf sdf sdf sdf sdf sdf sdf sdf ds");
tp.setOpaque(false);
titleP.add(sp);
root.add(titleP,c);
JPanel infoP = new JPanel();
infoP.setBorder(BorderFactory.createTitledBorder("infoP"));
c.gridwidth = 5;
c.gridy = 1;
c.gridx = 0;
//infoP.setPreferredSize(new Dimension(350,200));
root.add(infoP,c);
JPanel priceP = new JPanel();
priceP.setBorder(BorderFactory.createTitledBorder("priceP"));
c.gridx = 5;
c.gridwidth = 3;
root.add(priceP,c);
fr.setContentPane(root);
fr.pack();
int size1 = fr.getHeight();
int width = 120;
fr.setSize(width, 0);
size1 += tp.getHeight();
size1 += 25;
fr.setSize(width, size1);
fr.setVisible(true);
La question est, comment je ne calcule pleine taille JTextPane, afin de régler sa hauteur au récipient, qui tient-il? La partie où j'ai hardcodedly essayé de donner une correction de taille, même travaillé, mais j'ai alors ajouté une police ...
Merci. Maintenant, je peux normalement utiliser StyledDoc et ect. –