Я пытаюсь получить доступ к JButtons на JPanel, на мой взгляд. Мой класс просмотра находится в пакете под названием проект. По сути, это JFrame с несколькими JPanels из пакета под названием views. Когда я использую вид в своем классе контроллеров, я могу получить доступ к панелям, но я не могу получить go ниже, чтобы получить кнопки. Я попытался изменить одну из кнопок на publi c, и все еще не мог получить к ней доступ. Также у меня есть функция получения, но это также не дает мне доступа. Я включил код и структуру проекта ниже.
Структура проекта
Project
> src
> project
> View.java
> Controller.java
> views
> JButtonPanel.java
project / View. java
package project;
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import config.Config;
import views.JButtonPanel;
import views.JColorPanel;
import views.JImagePanel;
import views.JMaskPanel;
public class View {
protected JFrame jf;
protected JPanel jButtonPanel;
protected JPanel jImagePanel;
protected JPanel jMaskPanel;
protected JPanel jColorPanel;
View() {
BorderLayout bl = new BorderLayout();
this.jf = new JFrame();
this.jf.setTitle("Gradient coloring app");
this.jf.setPreferredSize(new Dimension(Config.screenSize.width, Config.screenSize.height));
this.jf.setLayout(bl);
this.jButtonPanel = new JButtonPanel();
this.jImagePanel = new JImagePanel(null);
this.jColorPanel = new JColorPanel();
this.jMaskPanel = new JMaskPanel();
this.jf.add(this.jButtonPanel, BorderLayout.PAGE_START);
this.jf.add(this.jImagePanel, BorderLayout.LINE_START);
this.jf.add(this.jColorPanel, BorderLayout.LINE_END);
this.jf.add(this.jMaskPanel, BorderLayout.PAGE_END);
this.jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
this.jf.setResizable(false);
this.jf.pack();
this.jf.setVisible(true);
}
/**
* @return the jButtonPanel
*/
public JPanel getjButtonPanel() {
return jButtonPanel;
}
/**
* @return the jImagePanel
*/
public JPanel getjImagePanel() {
return jImagePanel;
}
/**
* @return the jMaskPanel
*/
public JPanel getjMaskPanel() {
return jMaskPanel;
}
/**
* @return the jColorPanel
*/
public JPanel getjColorPanel() {
return jColorPanel;
}
/**
* @param jButtonPanel the jButtonPanel to set
*/
public void setjButtonPanel(JPanel jButtonPanel) {
this.jButtonPanel = jButtonPanel;
}
/**
* @param jImagePanel the jImagePanel to set
*/
public void setjImagePanel(JPanel jImagePanel) {
this.jImagePanel = jImagePanel;
}
/**
* @param jMaskPanel the jMaskPanel to set
*/
public void setjMaskPanel(JPanel jMaskPanel) {
this.jMaskPanel = jMaskPanel;
}
/**
* @param jColorPanel the jColorPanel to set
*/
public void setjColorPanel(JPanel jColorPanel) {
this.jColorPanel = jColorPanel;
}
}
views / JButtonPanel. java
package views;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import javax.swing.JButton;
import javax.swing.JPanel;
import config.Config;
@SuppressWarnings("serial")
public class JButtonPanel extends JPanel {
protected JButton targetButton;
protected JButton colorSource;
protected JButton calGrad;
protected JButton addColorsToGradient;
public JButtonPanel() {
FlowLayout fl = new FlowLayout();
this.setPreferredSize(new Dimension(Config.screenSize.width, (int) (Config.screenSize.height * 0.075)));
this.setBorder(Config.buttonPanelBorder);
this.setLayout(fl);
this.targetButton = new JButton();
this.targetButton.setText("Load a target image");
this.add(this.targetButton);
...
}
/**
* @return the targetButton
*/
public JButton getTargetButton() {
return targetButton;
}
...
}
Буду признателен за любую помощь. Спасибо