konzentrieren kann ich zugeben, vielleicht scheint die Frage seltsam, wie geschrieben wird, aber ich werde hier erklären:Java nicht auf JTextField innen JPanel innerhalb JPanel als Ansichtsfenster in JScrollPane
ich eine JScrollPane haben, in denen Ich gebe richtigerweise ein JPanel, sagen wir, dass JScrollPane Variable ist jetzt "JSP" und JPanel ist "JP"
In meinem JP habe ich eine ArrayList von JPanel (nennen wir es AJP), die ich Sichtbarkeit steuern kann Außerhalb der JSP kann ich diese Sichtbarkeit steuern, indem ich auf verschiedene Schaltflächen klicke. Jede Schaltfläche ist mit einer Zahl verknüpft. Wenn ich also auf Button1 klicke, wird das erste AJP-Element auf true und alle anderen auf false gesetzt.
Jedes dieser AJP-Elemente hat verschiedene Elemente im Inneren, so dass beispielsweise AJP an der ersten Position zwei JTextFields und 1 JButton hat, AJP an Position 2 nur 1 JTextField.
Tatsache ist, dass scheint, dass ich nicht eine JButton oder bearbeiten Sie eine JTextField klicken können, wie die Maus, um sie nicht konzentrieren kann, werde ich hier einige Code schreiben
Dies ist die Klasse, die die JP enthält und es ist eine Erweiterung von JScrollPane
private int x, y, width, height;
private JPanel internalPanel = new JPanel();
private ArrayList<KPanel> kPanels = new ArrayList<KPanel>();
JViewport viewport = new JViewport();
public KScrollPanel(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.internalPanel.setBorder(new LineBorder(Color.black, 1));
this.internalPanel.setSize(new Dimension(this.width - 10, this.height - 10));
this.internalPanel.setPreferredSize(new Dimension(this.width - 10, this.height - 10));
this.setSize(new Dimension(this.internalPanel.getWidth() + 10, this.internalPanel.getHeight() + 10));
this.setPreferredSize(this.internalPanel.getSize());
this.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
this.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
viewport.add(this.internalPanel);
}
das andere ist die Klasse, die pratically besteht die Arraylist in der Klasse KScrollPanel ich gerade geschrieben, wie man sehen kann, wobei das Verfahren initialisieren fügt dinamically die Elemente (Kdrücken und KTextFields sind zwei Klassen extendind JButton und JTextField)
Diese Klasse natürlich ist eine Erweiterung von JPanel
private int x, y, width, height;
KTextField textfield_nodeName, textfield_relationshipName;
KButton button_saveNode, button_saveRelationship;
public KPanel(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
initGUI();
}
public KPanel() {
}
public void initGUI() {
this.setBounds(this.x, this.y, this.width, this.height);
this.setBorder(new LineBorder(Color.gray, 1));
}
public void initialize(String type) {
switch(type) {
case "Node":
textfield_nodeName = new KTextField(5, 5, 200, 30);
this.add(textfield_nodeName);
button_saveNode = new KButton(5, 35, 200, 30, "Save Node");
this.add(button_saveNode);
break;
case "Relationship":
textfield_relationshipName = new KTextField(5, 5, 250, 30);
this.add(textfield_relationshipName);
break;
}
this.revalidate();
this.repaint();
}
Ich vergesse es, um den Code hinzuzufügen, füge ich das Ansichtsfenster auf die JScrollPane, und in der Tat, ich sehe alle Objekte, die ganze Sache funktioniert , Ich erweitere die Komponenten, weil ich mehr Funktionalität hinzufügen möchte, das einzige, was nicht funktioniert, ist die Tatsache, dass ich nicht auf meine Tasten oder meine Textfelder konzentrieren kann –
'Ich möchte mehr Funktionalität hinzufügen,' - was Funktionalität fügen Sie dem Bildlauffeld hinzu? Das Festlegen einer Eigenschaft fügt keine Funktionalität hinzu. 'Ich vergesse, es zum Code hinzuzufügen,' Veröffentlichen Sie eine ordnungsgemäße [SSCCE] (http://sscce.org/), die das Problem veranschaulicht. Erstellen Sie zunächst den SSCCE mit den Swing-Komponenten.Dann, wenn das funktioniert, probiere eine benutzerdefinierte Komponente aus. Wenn es dann nicht mehr funktioniert, wissen Sie, dass das Problem Ihre benutzerdefinierte Komponente ist. – camickr
Ok, ich habe festgestellt, dass das Problem die Einstellungen der Elemente wegen des Layouts waren, ich habe getan, wie Sie über die Erstellung eines Arbeitsbeispiels beraten und jetzt funktioniert alles, danke –