我如何在JSCrollpane上使用Jcombobox的Jframe

发布于 2025-01-25 20:26:14 字数 3018 浏览 2 评论 0原文

基本上,我尝试在此处向我的代码添加一个下拉列表。尽管每当我尝试又一个接一个地添加一个时,它最终会超越它。如果我在滚动前运行下拉菜单,则将滚动放在顶部,反之亦然。我有点是Jframes,在Java中绘画,所以请忍受我。

MyFrame类:

import java.awt.BorderLayout;
import java.awt.FontFormatException;
import java.io.IOException;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JViewport;

@SuppressWarnings("serial")
public class MyFrame extends JFrame {

    public void cadetImage() throws FontFormatException, IOException {

        JPanel panel = new Puller();
        JScrollPane scroll = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        String[] opts = { "All", "A", "B", "C", "D", "E", "F" };
        JComboBox<String> dropdown = new JComboBox<>(opts);

        setTitle("Puller");
        scroll.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
        add(dropdown, BorderLayout.CENTER);
        add(scroll, BorderLayout.CENTER);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setSize(500, 500);
        setLocationRelativeTo(null);
        setVisible(true);
        setExtendedState(MAXIMIZED_BOTH);
    }
}

Puller类:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Puller extends JPanel {

    private int pw, ph;
    private Font rso;

    public Puller() throws FontFormatException, IOException {
        InputStream is = new FileInputStream("assets/fonts/racing sans one.ttf");
        Dimension screen = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
        pw = (int) screen.getWidth();
        ph = (int) screen.getHeight();
        setPreferredSize(new Dimension(pw - 20, ph - 30));

        rso = Font.createFont(Font.TRUETYPE_FONT, is);
    }

    @Override
    public void paint(Graphics p) {
        Graphics2D page = (Graphics2D) p;

        template(page);
    }

    private void template(Graphics2D page) {
        page.setColor(Color.decode("#666666"));
        page.fillRect(0, 0, pw, ph);

        // Name Header
        page.setColor(Color.BLACK);
        page.fillRect(997, 122, 311, 90);
        page.setColor(Color.decode("#bf9000"));
        page.fillRect(1000, 125, 305, 84);
        page.setColor(Color.BLACK);
        page.setFont(rso.deriveFont(Font.BOLD, 75f));
        page.drawString("NAME", 1052, 193);

        // Filter Field
        page.setColor(Color.BLACK);
        page.fillRect(997, 212, 70, 50);
        page.setColor(Color.decode("#666666"));
        page.fillRect(1000, 212, 64, 47);
    }
}

无论我获得什么帮助,都将不胜感激。

Basically I'm try to add a dropdown to my code here. Although whenever I try to add one after the other, it ends up overtaking it. If I run the dropdown before the scroll then I get the scroll on top and vice versa. I'm kinda new to JFrames and drawing in Java so please bear with me.

MyFrame Class:

import java.awt.BorderLayout;
import java.awt.FontFormatException;
import java.io.IOException;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JViewport;

@SuppressWarnings("serial")
public class MyFrame extends JFrame {

    public void cadetImage() throws FontFormatException, IOException {

        JPanel panel = new Puller();
        JScrollPane scroll = new JScrollPane(panel, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        String[] opts = { "All", "A", "B", "C", "D", "E", "F" };
        JComboBox<String> dropdown = new JComboBox<>(opts);

        setTitle("Puller");
        scroll.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
        add(dropdown, BorderLayout.CENTER);
        add(scroll, BorderLayout.CENTER);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();
        setSize(500, 500);
        setLocationRelativeTo(null);
        setVisible(true);
        setExtendedState(MAXIMIZED_BOTH);
    }
}

Puller Class:

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontFormatException;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

@SuppressWarnings("serial")
public class Puller extends JPanel {

    private int pw, ph;
    private Font rso;

    public Puller() throws FontFormatException, IOException {
        InputStream is = new FileInputStream("assets/fonts/racing sans one.ttf");
        Dimension screen = new Dimension(Toolkit.getDefaultToolkit().getScreenSize());
        pw = (int) screen.getWidth();
        ph = (int) screen.getHeight();
        setPreferredSize(new Dimension(pw - 20, ph - 30));

        rso = Font.createFont(Font.TRUETYPE_FONT, is);
    }

    @Override
    public void paint(Graphics p) {
        Graphics2D page = (Graphics2D) p;

        template(page);
    }

    private void template(Graphics2D page) {
        page.setColor(Color.decode("#666666"));
        page.fillRect(0, 0, pw, ph);

        // Name Header
        page.setColor(Color.BLACK);
        page.fillRect(997, 122, 311, 90);
        page.setColor(Color.decode("#bf9000"));
        page.fillRect(1000, 125, 305, 84);
        page.setColor(Color.BLACK);
        page.setFont(rso.deriveFont(Font.BOLD, 75f));
        page.drawString("NAME", 1052, 193);

        // Filter Field
        page.setColor(Color.BLACK);
        page.fillRect(997, 212, 70, 50);
        page.setColor(Color.decode("#666666"));
        page.fillRect(1000, 212, 64, 47);
    }
}

Whatever help I can get would be appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文