Мне было интересно, что пошло не так. Я сделал это раньше, но по какой-то причине я не могу заставить это работать на этот раз.Невозможно нарисовать JPanel с getGraphics
Я разработал проект в Netbeans. Самой важной частью является метод initTiras, который, как предполагается, что-то нарисовал, но это не так. Я включил код, созданный NetBeans.
Вот самая упрощенная версия кода, и все же она ничего не рисует.
Так что я создал новый кадр в проекте. Затем я помещаю JPanel в него (в режиме desing). JPanel называется ElPanel и JFrame LaFrame.
Вот главный класс:
package ElPackage;
public class Resistores {
public static void main(String[] args) {
LaFrame UnaFrame = new LaFrame();
UnaFrame.setVisible(true);
}
}
Внутри класса LaFrame:
package ElPackage;
import java.awt.Color;
import java.awt.Graphics;
public class LaFrame extends javax.swing.JFrame {
public LaFrame() {
initComponents();
initTiras();
}
public void initTiras() {
Graphics LasG = ElPanel.getGraphics();
LasG.setColor(Color.WHITE);
LasG.fillRect(10, 10, 30, 30);
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
ElPanel = new javax.swing.JPanel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setResizable(false);
ElPanel.setBackground(new java.awt.Color(51, 0, 51));
ElPanel.setForeground(new java.awt.Color(255, 255, 255));
javax.swing.GroupLayout ElPanelLayout = new javax.swing.GroupLayout(ElPanel);
ElPanel.setLayout(ElPanelLayout);
ElPanelLayout.setHorizontalGroup(
ElPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
ElPanelLayout.setVerticalGroup(
ElPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ElPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ElPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
// Variables declaration - do not modify
private javax.swing.JPanel ElPanel;
// End of variables declaration
}
Прочтите учебник Swing в [Custom Painting] (http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html). Я нахожу, что учебник лучше справляется с объяснением того, как работает обычная роспись, которая делает простой пример, найденный в Интернете. – camickr
Спасибо вам большое, я закончил читать учебник. Но разве он не работал так, как я его использовал? Я имею в виду, что он работал один раз, я точно не знаю, почему, но это произошло в другом проекте, где мне удалось создать графику JPanel в коде JFrame. – unPez