Java 如何在具有多个按钮的jframe上应用滚动条
我正在创建一个框架,它将显示一个JButton列表,其中显示一些产品的位置。我希望此列表成为按钮的原因是,如果单击按钮,将其链接到其他帧。我想知道一种方法,有一个滚动条,可以通过整个列表。我目前拥有的代码如下:Java 如何在具有多个按钮的jframe上应用滚动条,java,jframe,jbutton,actionlistener,jscrollpane,Java,Jframe,Jbutton,Actionlistener,Jscrollpane,我正在创建一个框架,它将显示一个JButton列表,其中显示一些产品的位置。我希望此列表成为按钮的原因是,如果单击按钮,将其链接到其他帧。我想知道一种方法,有一个滚动条,可以通过整个列表。我目前拥有的代码如下: enter code here import javax.swing.*;//window settings import java.awt.*;//font settings import java.awt.event.*;//action settings public class
enter code here
import javax.swing.*;//window settings
import java.awt.*;//font settings
import java.awt.event.*;//action settings
public class locationFrame extends JFrame implements ActionListener
{
Font tFont=new Font("Arial",Font.BOLD,46);
Font bFont=new Font("Arial",Font.BOLD,52);
JLabel Title=new JLabel("Enid's Picks");
JLabel label=new JLabel("");
Image img=new
ImageIcon(this.getClass().getResource("/HPMLOGO.png")).getImage();
JButton backButton=new JButton("Go Back");
JButton AlemaniButton=new JButton("Alemania");
JButton ArgentinaButton=new JButton("Argentina");
JButton CaliforniaButton=new JButton("California");
JButton ChileButton=new JButton("Chile");
JButton EspanaButton=new JButton("Espana");
JButton FranciaButton=new JButton("Francia");
JButton ItaliaButton=new JButton("Italia");
JButton NZButton=new JButton("New Zealand");
JButton PortugalButton=new JButton("Portugal");
JButton PRButton=new JButton("Puerto Rico");
JButton USAButton=new JButton("USA");
JScrollPane scroll=new
ScrollPane(Title,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
public locationFrame()
{
super("Wine Application");
setLayout(null);
Title.setFont(tFont);
Title.setLocation(450,0);
Title.setSize(300,100);
label.setIcon(new ImageIcon(img));
label.setBounds(350,100,500,500);
backButton.setFont(bFont);
backButton.setBounds(800,1800,400,100);
AlemaniButton.setFont(bFont);
ArgentinaButton.setFont(bFont);
CaliforniaButton.setFont(bFont);
ChileButton.setFont(bFont);
EspanaButton.setFont(bFont);
FranciaButton.setFont(bFont);
ItaliaButton.setFont(bFont);
NZButton.setFont(bFont);
PortugalButton.setFont(bFont);
PRButton.setFont(bFont);
USAButton.setFont(bFont);
AlemaniButton.setBounds(300,700,600,150);
ArgentinaButton.setBounds(300,1085,600,150);
CaliforniaButton.setBounds(300,1470,600,150);
ChileButton.setBounds(300,1855,600,150);
EspanaButton.setBounds(300,2240,600,150);
FranciaButton.setBounds(300,2625,600,150);
ItaliaButton.setBounds(300,3010,600,150);
NZButton.setBounds(300,3395,600,150);
PortugalButton.setBounds(300,3780,600,150);
PRButton.setBounds(300,4165,600,150);
USAButton.setBounds(300,4550,600,150);
setExtendedState(JFrame.MAXIMIZED_BOTH);
add(Title);
add(label);
add(backButton);
add(AlemaniButton);
add(ArgentinaButton);
add(CaliforniaButton);
add(ChileButton);
add(EspanaButton);
add(FranciaButton);
add(ItaliaButton);
add(NZButton);
add(PortugalButton);
add(PRButton);
add(USAButton);
add(scroll);
getContentPane().setBackground(new Color(255,255,255));
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
backButton.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==backButton)
{
mainWineFrame mainFrame=new mainWineFrame();
mainFrame.setVisible(true);
setVisible(false);
}
}
}你的代码和问题都有很多缺陷。我将列出其中一些,希望我能帮助您解决问题并改进代码编写
JFrame frame = new JFrame();
JPanel panel = new JPanel();
for (int i = 0; i < 10; i++) {
panel.add(new JButton(""+i));
}
JScrollPane scrollPane = new JScrollPane(panel);
frame.getContentPane().setLayout(new BorderLayout());
frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
frame.setPreferredSize(new Dimension(100, 100));
frame.pack();
frame.setVisible(true);
JFrame=newjframe();
JPanel面板=新的JPanel();
对于(int i=0;i<10;i++){
添加(新的JButton(“+i”);
}
JScrollPane scrollPane=新的JScrollPane(面板);
frame.getContentPane().setLayout(新的BorderLayout());
frame.getContentPane().add(滚动窗格,BorderLayout.CENTER);
frame.setPreferredSize(新尺寸(100100));
frame.pack();
frame.setVisible(true);
您可以在此处找到参考资料:谢谢您的反馈。你是对的。我应该使用适当的代码格式,比如camalCase来简化事情。代码://JScrollPane scroll=newjscrollpane(标题,JScrollPane.VERTICAL\u SCROLLBAR\u根据需要);和//添加(滚动);我们正在进行测试,看看在我试验JScrollPane之后会发生什么。创建一个既有JScrollpane又有我所有按钮的面板,然后将该面板添加到我的JFrame会更容易吗?没问题,很高兴我能提供帮助。不过,关于您的问题,是的,我相信如果您将所有按钮添加到JPanel并将该JPanel设置为JScrollPane的视口会更好。之后,将JScrollPane添加到JFrame中,一切都会顺利进行。我也在答案中加入了一些我认为接近你想要实现的东西。