Estou começando a desenvolver isso, apenas para aprender a adicionar coisas pelo for, e quando ficar grande mexer no tamanho da tela. Mas me deparei nesse detalhe, e se o número de coisas for maior que o tamanho da tela do pc ?
Segue meu código:
Main:
public class Main {
public static void main(String args[]) {
new Tela();
}
}
Tela:
[code]
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class Tela extends JFrame {
private JFrame frame;
JLabel digite;
JTextField campodigite;
JButton ok;
int produtos;
Bg bg = null;
public Tela() {
frame = new JFrame("Quantidade");
bg = new Bg();
frame.getContentPane().add(bg);
frame.setSize(800, 360);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
bg.setLayout(null);//definindo o layout
digite = new JLabel("Digite o número de produtos:");
ok = new JButton();
campodigite = new javax.swing.JTextField();
ok.setText("ok");
digite.setBounds(300,10,170,20);
campodigite.setBounds(471,10,30,20);
ok.setBounds(502,10,30,20);
digite.setForeground(new java.awt.Color(240, 240, 240));
ok.setMargin(new Insets(2, 4, 2, 4));
ok.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
okActionPerformed(evt);
}
});
bg.add(ok);
bg.add(campodigite);
bg.add(digite);
JScrollPane p = new JScrollPane();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
private void okActionPerformed(java.awt.event.ActionEvent evt) {
int produtos = Integer.parseInt(campodigite.getText());
if (produtos > 14) {
for (int i = 14; i < produtos; i++) {
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension scrnsize = toolkit.getScreenSize();
int heigth = (int) scrnsize.getHeight();
int proximaAltura;
proximaAltura = ((i - 14) * 25) + 360;
if (proximaAltura < heigth) {
frame.setSize(800, proximaAltura);
frame.setLocationRelativeTo(null);
}
}
}
for (int i = 0; i < produtos; i++){
String numero = ("produto: " + (i + 1));
JLabel b = null;
b = new JLabel();
b.setText(numero);
b.setForeground(new java.awt.Color(240, 240, 240));
int altura;
altura = (i * 20) + 40;
b.setBounds(350, altura, 100, 20);
bg.add(b);
bg.repaint();
}
}
}[/code]
Bg (serve apenas para ficar com a imagem no fundo):
[code]import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
public class Bg extends JPanel {
public Bg() {
}
public void paintComponent(Graphics g) {
Graphics2D gr = (Graphics2D) g.create();
try {
Image imagem = ImageIO.read(getClass().getResourceAsStream("bg.png"));
gr.drawImage((BufferedImage) imagem, null, 0, 0);
} catch (IOException ex) {
Logger.getLogger(Bg.class.getName()).log(Level.SEVERE, null, ex);
}
}
}[/code]
Eu uso um If dentro do for do primeiro if da ação do botão ok para que a próxima altura do app for maior que o tamanho da tela do monitor, a altura do app será do mesmo tamanho da tela do monitor, então, eu preciso colocar um scroll caso tenha mais números.
Então, alguém me ajuda como fazer isso? Devo colocar o scroll em Bg ou em Tela?
E, se alguém também souber como eu colocar o que tem no Bg em Tela, eu ficaria muito grato também.