Я попытался добавить кнопку на JFrame, но она почему-то не появляется. Как мне сделать так, чтобы оно появилось?
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.BorderFactory;
import java.awt.Color;
import java.awt.Container;
import java.awt.Rectangle;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.*;
public class GraficoconArreglo extends javax.swing.JFrame {
JPanel pan = (JPanel) this.getContentPane();
JLabel []lab = new JLabel[6];
JTextField []text = new JTextField[6];
Border border = BorderFactory.createLineBorder(Color.pink,1);
JButton b = new JButton("Calculate");
public GraficoconArreglo() {
initComponents();
pan.setLayout(null);
pan.setBackground(Color.GRAY);
for(int i=0; i<lab.length ;i++){
lab[i] = new JLabel();
text[i] = new JTextField();
lab[i].setBounds(new Rectangle(15,(i+1)*40, 60, 25));
lab[i].setText("Data " + (i+1));
lab[i].setBorder(border);
text[i].setBounds(new Rectangle(100,(i+1)*40, 60, 25));
pan.add(lab[i],null);
pan.add(text[i],null);
setSize(200,330);
setTitle("Arrays in forums.");
add(b);
b.addActionListener((ActionListener) this);
}
}
1) Для более быстрой помощи опубликуйте минимальный воспроизводимый пример или Краткий, автономный, правильный пример. 2) Предоставьте изображение ASCII или простой рисунок макета предназначена графического интерфейса пользователя с минимальным размером и, если размер можно изменять, с большей шириной и высотой, чтобы показать, как следует использовать дополнительное пространство. 3) Графические интерфейсы Java должны работать с разными ОС, размером экрана, разрешением экрана и т. д., Используя разные PLAF в разных регионах. Таким образом, они не способствуют созданию идеальной компоновки пикселей. Вместо этого используйте менеджеры компоновки или их комбинации ..
.. вместе с отступом макета и границами для белое пространство.




Вы создаете только одну кнопку и добавляете ее в 6 разных мест. Таким образом, вы увидите его только на последнем добавленном месте.
Вы должны добавить кнопку в contentPane, а не в JFrame. Рабочий код для этого, предоставленный SwingDesigner из Eclipse Marketplace, будет:
public class Window extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Window frame = new Window();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Window() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
JButton btnNewButton = new JButton("New button");
btnNewButton.setBounds(170, 110, 89, 23);
contentPane.add(btnNewButton);
}
}
(1-) Не используйте пустой макет. Swing был разработан для использования с менеджерами по расположению. You should add the button to the contentPane, not the JFrame. - можно добавить кнопку в рамку. Метод add () кадра перенаправит компонент на панель содержимого кадра. Нет необходимости специально устанавливать панель содержимого для панели, поскольку панель содержимого по умолчанию уже является JPanel.
Никогда не используйте пустой макет. Никогда не пытайтесь вызвать в
setBoundsнапрямую. Это никогда не сработает. Ваша кнопка, вероятно, не отображается, потому что находится за пределами поля.