ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen.

Y

yachty66

Mitglied
Ich möchte mir ein GUI ausgeben lassen. Dafür habe ich mehrere Klassen. Eine Klasse ImagePanel bei der - je nach dem welche Eingabe sich die Anzeige verändert. (Die jeweiligen Funktionen sind nicht weiter relevant, daher sind sie nicht zu beachten)

ImagePanel:
public class ImagePanel extends JPanel {
    private BufferedImage img;
    List isBorEna = new ArrayList();
    List getConCoo = new ArrayList();
    List getRa = new ArrayList();
    List getTesCoo = new ArrayList();
    JPanel borderPanel = new JPanel();
    BorderLayout panelLayout = new BorderLayout();
    public ImagePanel() {
        //JPanel borderPanel = new JPanel();
        borderPanel.setLayout(panelLayout);

        //borderPanel.add(new JButton("PAGE_START"), BorderLayout.PAGE_START);
        //borderPanel.add(new JButton("PAGE_END"), BorderLayout.PAGE_END);
        borderPanel.setSize(31, 78);
        //add(borderPanel, c);
    }

    public void setImage(LFAImage image) throws IOException {
        //image.getImage();
        borderPanel.createImage((ImageProducer) image.getImage());
    }

    public LFAImage getImage() {
        return getImage();
    }

    public void setConfig(Configuration config) {
        isBorEna.add(config.isBorderEnabled());
        getConCoo.add(config.getControlCoordinates());
        getRa.add(config.getRatio());
        getTesCoo.add(config.getTestCoordinates());
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        List<Component> componentList = Arrays.asList(borderPanel.getComponents());
        if (componentList.isEmpty()) {
            JLabel jlabel = new JLabel("N/A");
            borderPanel.add(jlabel);
            borderPanel.setBackground(Color.white);
        } else if(componentList.isEmpty() == false && !componentList.contains(getImage())){
            borderPanel.setBackground(Color.white);
            g.setColor(Color.BLUE);
            g.drawRect((Integer) getConCoo.get(1), (Integer) getConCoo.get(2), (Integer) (getConCoo.get(3))- (Integer) (getConCoo.get(1)), (Integer)(getConCoo.get(4))-(Integer)(getConCoo.get(2)));

        }
    }
}

In meiner MainFrame Klasse soll dann das gesamte GUI mit dem ImagePanel ausgegeben werden. Ich weiß bloß nicht, wie ich das ImagePanel mit den verschiedenen Methoden in MainFrame einfügen soll.

MainFrame:
public class MainFrame extends JFrame {
    private JLabel mutationFileLabel = new JLabel("Please load a mutation CSV file");
    private JLabel sequenceFileLabel = new JLabel("Please load a patient FASTA/FASTQ file");
    private JLabel referenceFileLabel = new JLabel("Please load a reference FASTA/FASTQ file");
    private JLabel recommendedDrug = new JLabel("Recommended drug:");
    private JLabel predictedResistanceDrug = new JLabel("Predicted resistance for recommended drug:");
    private JLabel resultRecommendedDrug = new JLabel("N/A");
    private JLabel resultPredictedRecommendedDrug = new JLabel("N/A");
    private ImageIcon loadIcon = new ImageIcon("resources/folder_explore.png");
    private JButton loadMutationFileButton = new JButton(loadIcon);
    private JButton loadReferenceFileButton = new JButton(loadIcon);
    private JButton loadSequenceFileButton = new JButton(loadIcon);
    private JButton calculationButton = new JButton("Predict best drug");
    private String mut;
    private String ref;
    private String seq;

    ImagePanel panel = new ImagePanel();

    protected abstract class LoadListener extends Component implements ActionListener {
        String extensionDescription;
        String[] extensions;
        public LoadListener(String extensionDescription, String... extensions) {
            this.extensionDescription = extensionDescription;
            this.extensions = extensions;
        }

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            JFileChooser jfc = new JFileChooser(FileSystemView.getFileSystemView().getHomeDirectory());
            jfc.setDialogTitle(extensionDescription);
            jfc.setAcceptAllFileFilterUsed(false);
            FileNameExtensionFilter filter = new FileNameExtensionFilter(extensionDescription, extensions);
            jfc.addChoosableFileFilter(filter);
            int returnValue = jfc.showOpenDialog(null);
            if (returnValue == JFileChooser.APPROVE_OPTION) {
                setData(jfc.getSelectedFile());
                jfc.getSelectedFile().getAbsolutePath();
            }
        }

        protected abstract void setData(File file);
    }

    public MainFrame() {
        super("HIV Diagnostics Tool");
        setSize(400, 100);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        BorderLayout d = new BorderLayout();
        panel.add(BorderLayout.CENTER);
        init();
        pack();
        setVisible(true);
    }

    private void init() {
        initMenuBar();
        initFileChoosers();
        changeLabels();
        //calculate();
    }

    private void changeLabels(){
        loadMutationFileButton.addActionListener(new LoadListener("file", "csv") {
            @Override
            protected void setData(File file) {
                mutationFileLabel.setText(file.getName());
                mutationFileLabel.setForeground(Color.black);
                mut = file.getPath();
            }
        });

        loadReferenceFileButton.addActionListener(new LoadListener("file", "FASTA", "FASTQ") {
            @Override
            protected void setData(File file) {
                referenceFileLabel.setText(file.getName());
                referenceFileLabel.setForeground(Color.black);
                ref = file.getPath();
            }
        });

        loadSequenceFileButton.addActionListener(new LoadListener("file", "FASTA","FASTQ") {
            @Override
            protected void setData(File file) {
                sequenceFileLabel.setText(file.getName());
                sequenceFileLabel.setForeground(Color.black);
                seq = file.getPath();
                if((sequenceFileLabel.getForeground() == Color.black && referenceFileLabel.getForeground() == Color.black && mutationFileLabel.getForeground() == Color.black) == true){
                    calculationButton.setEnabled(true);
                }
            }
        });
    }

    /*private void calculate(){
        calculationButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                try {
                    SequenceAnalysisManager.performAnalysis(ref, seq, mut);
                    resultRecommendedDrug.setText(SequenceAnalysisManager.performAnalysis(ref, seq, mut).getBestDrug());
                    resultRecommendedDrug.setForeground(Color.black);
                    resultPredictedRecommendedDrug.setText(String.valueOf(SequenceAnalysisManager.performAnalysis(ref, seq, mut).getBestDrugResistance()));
                    resultPredictedRecommendedDrug.setForeground(Color.black);

                } catch (NoValidReadersException e) {
                    JOptionPane.showMessageDialog(getOwner(), e.getMessage(),
                            "Unsupported file format", JOptionPane.INFORMATION_MESSAGE);
                } catch (FileFormatException e) {
                    JOptionPane.showMessageDialog(getOwner(),
                            e.getMessage(), "Error parsing file", JOptionPane.INFORMATION_MESSAGE);
                } catch (IOException e) {
                    JOptionPane.showMessageDialog(getOwner(), e.getMessage(),
                            "IOException -> Error loading file",JOptionPane.INFORMATION_MESSAGE);
                }
            }
        });
    }*/

    private void initMenuBar() {
        JMenuBar menuBar = new JMenuBar();
        JMenu fileMenu = new JMenu("File");
        JMenuItem loadConfiguration = new JMenuItem("Load configuration");
        loadConfiguration.addActionListener(new LoadListener("file", "txt") {
            @Override
            public void setData(File file) {
                file.getPath();
                //panel.setImage();

            }
        });

        JMenuItem LoadLFAImage = new JMenuItem("Load LFA image");
        LoadLFAImage.addActionListener(new LoadListener("file", "png") {
            @Override
            public void setData(File file) {
                file.getPath();
            }
        });

        JMenuItem exit = new JMenuItem("Exit");
        exit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                System.exit(0);
            }
        });
        fileMenu.add(loadConfiguration);
        fileMenu.add(LoadLFAImage);
        fileMenu.add(exit);
        menuBar.add(fileMenu);
        setJMenuBar(menuBar);
    }

    private void addLoaders(JLabel label, JButton button, GridBagConstraints c/*, ActionListener listener*/) {
        c.weightx = 5;
        c.anchor = GridBagConstraints.WEST;
        add(label, c);
        c.gridx++;
        c.weightx = 1;
        c.anchor = GridBagConstraints.EAST;
        add(button, c);
    }

    private void initFileChoosers() {
        setLayout(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(0, 5, 0, 5);
        mutationFileLabel.setForeground(Color.red);
        c.gridx = 0;
        c.gridy = 0;
        addLoaders(mutationFileLabel, loadMutationFileButton, c);
        referenceFileLabel.setForeground(Color.red);
        c.gridx = 0;
        c.gridy ++;
        addLoaders(referenceFileLabel, loadReferenceFileButton, c);
        c.gridx = 0;
        c.gridy ++;
        addLoaders(sequenceFileLabel, loadSequenceFileButton, c);
        sequenceFileLabel.setForeground(Color.red);
        c.gridx = 0;
        c.gridy ++;
        c.gridwidth = 2;
        calculationButton.setEnabled(false);
        add(calculationButton, c);
        c.gridx = 0;
        c.gridy++;
        c.anchor = GridBagConstraints.CENTER;
        add(recommendedDrug, c);
        c.gridx = 0;
        c.anchor = GridBagConstraints.EAST;
        resultRecommendedDrug.setForeground(Color.red);
        add(resultRecommendedDrug, c);
        c.gridx = 0;
        c.gridy++;
        c.anchor = GridBagConstraints.WEST;
        add(predictedResistanceDrug, c);
        c.gridx = 0;
        c.anchor = GridBagConstraints.EAST;
        resultPredictedRecommendedDrug.setForeground(Color.red);
        add(resultPredictedRecommendedDrug, c);
    }

    public static void main(String[] args) {
        MainFrame gui = new MainFrame();
        gui.setVisible(true);
    }

}
 
mihe7

mihe7

Top Contributor
Ich weiß bloß nicht, wie ich das ImagePanel mit den verschiedenen Methoden in MainFrame einfügen soll.
Verstehe jetzt das Problem nicht wirklich. Dein ImagePanel ist ein JPanel, also eine Swing-Komponente. Die kannst Du genauso wie alle anderen auch verwenden. Das Hinzufügen zum MainFrame funktioniert also nicht anders wie bei JLabel auch. Oder soll das ImagePanel als Contaner für die anderen Komponenten dienen? Dann müsstest Du halt panel.add(....) aufrufen. Alternativ könntest Du auch setContentPane(panel) verwenden.

Aber: ich rate hier nur ins Blaue hinein. Man müsste wissen, was genau Du tun möchtest.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Arraylist mit anderer ArrayList überschreiben Allgemeine Java-Themen 17
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
E Swing Buttons auf knopfdruck(anderer Button) erstellen Allgemeine Java-Themen 6
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7
A Collections Inhalt einer Liste mit Inhalt anderer Liste vergleichen ? Allgemeine Java-Themen 7
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
2 Joda Time - Localtime mit anderer Zeit vergleichen? Allgemeine Java-Themen 1
E KeyCode in anderer Klasse speichern Allgemeine Java-Themen 2
F Eigene .jar mit anderer .jar öffnen Allgemeine Java-Themen 7
L Klassen Konstruktor soll Objekt anderer Klasse erzeugen Allgemeine Java-Themen 2
B Benutzeroberfläche in anderer Klasse aufrufen Allgemeine Java-Themen 5
E Auf Java-Objekt aus anderer Instanz zugreifen Allgemeine Java-Themen 26
A Klassen String Array in anderer Klasse verwenden Allgemeine Java-Themen 11
D von einer Klasse auf Komponente in anderer Klasse zugreifen Allgemeine Java-Themen 5
R Klasse über Button Event in anderer Klasse informieren Allgemeine Java-Themen 11
E Variablen anderer Klassen auslesen (nur Name bekannt) Allgemeine Java-Themen 4
M Datumsformat anderer Locales Allgemeine Java-Themen 3
N iText Problem beim verlinken anderer PDFs Allgemeine Java-Themen 2
B Thread beenden (von anderer Klasse) Allgemeine Java-Themen 20
R Java Text anderer Schriftart einlesen Allgemeine Java-Themen 2
G auf variable in anderer class zugreifen Allgemeine Java-Themen 2
M Thread aus anderer VM starten bzw. stoppen Allgemeine Java-Themen 7
Q daten propertie datei aus anderer applikation Allgemeine Java-Themen 6
J Zugriff auf Map in anderer Klasse Allgemeine Java-Themen 2
S anderer Mime Type bei xml-Datei Allgemeine Java-Themen 2
G Objekt in anderer Klasse clonen Allgemeine Java-Themen 3
S GetColor? anderer befehl Allgemeine Java-Themen 13
J Ausgewähltes File in anderer Klasse verfügbar machen? Allgemeine Java-Themen 3
T Klasse aus anderer Datei ausführen Allgemeine Java-Themen 9
lin Auf Methode von anderer Klasse zugreifen Allgemeine Java-Themen 5
M Verfügbarkeit von Variablen anderer Klassen Allgemeine Java-Themen 2
T Anderer Zeichensatz für String Allgemeine Java-Themen 35
J setTitle aus anderer Klasse aufrufen/ändern Allgemeine Java-Themen 4
H textfeldausgabe aus anderer Klasse Allgemeine Java-Themen 4
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S static in Interface und Klasse Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
J Builder Klasse mit Lombok bauen Allgemeine Java-Themen 2
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
X Klassen Klasse BreakIterator Allgemeine Java-Themen 6
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
M Kapselung Modellierung von Intervallen: Klasse Interval Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
scitex Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
scitex Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
J IndexOutOfBoundsException bei der Nutzung der Klasse Message von mime4j Allgemeine Java-Themen 5
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
Messoras Klassen Sämtliche Variablen einer Klasse übernehmen Allgemeine Java-Themen 6
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3
B Animierte Klasse schreiben - Wie? Allgemeine Java-Themen 9
M Klassen Eine Klasse in mehreren Klassen einbinden Allgemeine Java-Themen 11
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
AssELAss Log4j Logging Ausgabe für jede Klasse in seperates File Allgemeine Java-Themen 2
L Eclipse JavaFX Klasse starten programmatisch Allgemeine Java-Themen 1
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
L Von ArrayList abgeleitete Klasse nur mit bestimmten Objekten füllen Allgemeine Java-Themen 1
so_ein_Komischer Erste Schritte java Math Klasse finden? Allgemeine Java-Themen 2
J beans.instantiate(): Klasse kann nicht instanziiert werden Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben