GUI kodum üzerinde çalışıyorum, böylece sınıfta vermiş olduğum örnekler için sadece birkaç farklı arayüz oluşturdum.GUI'deki tüm bu hatalara neden sebep oluyor?
Burada bir GUI oluşturmaya çalışıyorum, üst kısımda Etiketler vardır, ardından kullanıcının kendi metin alanları takip eder, diğeri üst üste gelir. Daha sonra bunu bir dizi iki düğme ve nihayet düzenlenemeyen bir sonuç alanı (daha sonra sonuçlar için bazı alanları tanıtacağı gibi) ve opak olmasını istiyorum. Bütün bir dizi hata alıyorum, sadece aptalca bir şey yapıp yapmadığımı merak ediyorum.
panel için kod buradadır: önceden
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class GradePanel extends JPanel {
private JButton addEntry, calculate;
private JLabel name, grade;
private JTextField nameField, gradeField, resultField;
public GradePanel() {
// Button to add entry to list
addEntry = new JButton("Add entry to list");
// addEntry.addActionListener(new tempListener());
// Button to print all entries in correct format
calculate = new JButton("Print all user grades");
// calculate.addActionListener(new tempListener());
//Create Labels
name = new JLabel("Enter student name: ");
nameField = new JTextField(10);
// nameField.addActionListener(new tempListener());
grade = new JLabel("Enter students mark: ");
gradeField = new JTextField(5);
// gradeField.addActionListener(new tempListener());
//Bottom segment for result
resultField = new JTextField();
resultField.setOpaque(false);
resultField.setEditable(false);
setLayout(new BorderLayout());
//Bottom Panel
JPanel GradePanel = new JPanel();
GradePanel.setBorder(BorderFactory.createTitledBorder("Students/Results"));
GradePanel.setOpaque(false);
GradePanel.add(resultField);
//Button Panel
JPanel ButtonPane = new JPanel();
ButtonPane.add(addEntry, BoxLayout.LINE_AXIS);
ButtonPane.add(calculate, BoxLayout.LINE_AXIS);
//Label Panel
JPanel labelPane = new JPanel();
labelPane.add(name);
labelPane.add(Box.createRigidArea(new Dimension (5,0)));
labelPane.add(nameField);
labelPane.add(Box.createRigidArea(new Dimension (0,2)));
labelPane.add(grade);
labelPane.add(Box.createRigidArea(new Dimension (5,0)));
labelPane.add(gradeField);
//Add all panels to the main panel
add(labelPane, BorderLayout.NORTH);
add(ButtonPane, BorderLayout.CENTER);
add(GradePanel, BorderLayout.SOUTH);
setBackground(Color.WHITE);
setPreferredSize(new Dimension(400, 300));
}
teşekkürler!
DÜZENLEME: 2
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: illegal component position
at java.awt.Container.addImpl(Container.java:1087)
at java.awt.Container.add(Container.java:467)
at GradePanel.<init>(GradePanel.java:55)
at Grade$1.run(Grade.java:26)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
EDIT:
public class GradePanel2 extends JPanel {
private JButton addEntry, calculate;
private JLabel name, grade;
private JTextField nameField, gradeField, resultField;
public GradePanel2() {
// Button to add entry to list
addEntry = new JButton("Add entry to list");
// addEntry.addActionListener(new tempListener());
// Button to print all entries in correct format
calculate = new JButton("Print all user grades");
// calculate.addActionListener(new tempListener());
// Create Labels
name = new JLabel("Enter student name: ");
nameField = new JTextField(10);
// nameField.addActionListener(new tempListener());
grade = new JLabel("Enter students mark: ");
gradeField = new JTextField(5);
// gradeField.addActionListener(new tempListener());
// Bottom segment for result
resultField = new JTextField();
resultField.setOpaque(false);
resultField.setEditable(false);
setLayout(new BorderLayout());
// Bottom Panel
JPanel GradePanel = new JPanel();
GradePanel.setBorder(BorderFactory.createTitledBorder("Students/Results"));
GradePanel.setOpaque(false);
GradePanel.add(resultField);
// Button Panel
JPanel ButtonPane = new JPanel();
ButtonPane.setLayout(new BoxLayout(ButtonPane, BoxLayout.PAGE_AXIS));
ButtonPane.add(addEntry, BoxLayout.LINE_AXIS);
ButtonPane.add(calculate, BoxLayout.LINE_AXIS);
// Label Panel
JPanel labelPane = new JPanel();
labelPane.setLayout(new BoxLayout(labelPane, BoxLayout.PAGE_AXIS));
labelPane.add(name);
labelPane.add(Box.createRigidArea(new Dimension(5, 0)));
labelPane.add(nameField);
labelPane.add(Box.createRigidArea(new Dimension(0, 2)));
labelPane.add(grade);
labelPane.add(Box.createRigidArea(new Dimension(5, 0)));
labelPane.add(gradeField);
// Add all panels to the main panel
add(labelPane, BorderLayout.NORTH);
add(ButtonPane, BorderLayout.CENTER);
add(GradePanel, BorderLayout.SOUTH);
setBackground(Color.WHITE);
setPreferredSize(new Dimension(400, 300));
}
}
Ve olacağını görüyoruz hatalar ... bir göz haiving başlamalısınız? – KevinO
'setPreferredSize (yeni Boyut (400, 300));' kötü bir fikir – MadProgrammer
'ButtonPane' bir' FlowLayout' kullanıyor, ancak 'BoxLayout' kısıtlamalarını uygulamaya geçirerek API’nın bunu yapmasını engelliyor. var olmayan bir yerde bir bileşen eklemeye çalıştığınızı düşünün. Bu, "iş parçacığında istisna" AWT-EventQueue-0 "java.lang.IllegalArgumentException: illegal bileşen konumu" * exception – MadProgrammer