繁体   English   中英

如何将列表字符串传递给JLabel并在JFrame中显示

[英]How to pass list string to JLabel and show in JFrame

我一直在研究此程序,但很难将结果显示在弹出的窗口中。 运行该程序时,我在控制台中显示了正确的输出,但是当选择了单选按钮时,我需要它显示在单选按钮下方的窗口中。 在此先感谢您的帮助。

 import TrySource.TryWindow; import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.Arrays; import java.util.Random; import javax.swing.*; public class TrySomethingNew extends JFrame { // Radio buttons for selecting colors private JRadioButton jrbMexican, jrbItalian; JLabel jlblResult; // Declare a panel for displaying message private TryWindow TryWindow; // Main method public static void main(String[] args) { TrySomethingNew frame = new TrySomethingNew(); frame.pack(); frame.setSize(500,500); frame.setTitle("Try Something New"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLocationRelativeTo(null); // Center the frame frame.setVisible(true); } public TrySomethingNew() { // Create a MovingMessageCanvas instance and set colors TryWindow = new TryWindow("Let's try this."); TryWindow.setBackground(Color.WHITE); // Panel to hold radio buttons JPanel jpRadioButtons = new JPanel(); jpRadioButtons.setBorder(new javax.swing.border.TitledBorder("Select A Food Genre")); jpRadioButtons.add(jrbMexican = new JRadioButton("Mexican")); jpRadioButtons.add(jrbItalian = new JRadioButton("Italian")); // Group radio buttons ButtonGroup btg = new ButtonGroup(); btg.add(jrbMexican); btg.add(jrbItalian); //Panel to hold result JPanel jpResultPanel = new JPanel(); jpResultPanel.setBorder(new javax.swing.border.TitledBorder("Result")); // Place panels in the frame setLayout(new BorderLayout()); add(TryWindow, BorderLayout.CENTER); add(jpRadioButtons, BorderLayout.NORTH); add(jpResultPanel, BorderLayout.CENTER); // Register listeners with the buttons jrbMexican.addItemListener(new EventListener()); jrbItalian.addItemListener(new EventListener()); }//end main // Handle radio button selections class EventListener implements ItemListener { public void itemStateChanged(ItemEvent e) { if (jrbMexican.isSelected()) { java.util.List<String> mexicanList = Arrays.asList("Jose Locos\\n853 N Glenstone Ave, Springfield, MO 65802\\n(417) 831-1300", "Amigos Mexican Restaurant\\n2118 S Campbell Ave, Springfield, MO 65807\\n(417) 887-1401"); Random randomizer = new Random(); String random = mexicanList.get(randomizer.nextInt(mexicanList.size())); System.out.println(random); }//end if jrbMexican isSelected if (jrbItalian.isSelected()) { java.util.List<String> italianList = Arrays.asList("Zios Italian Kitchen\\n1249 E Kingsley St, Springfield, MO 65804\\n(417) 889-1919", "Bambinos Cafe\\n1141 E Delmar St, Springfield, MO 65807\\n(417) 862-9999"); Random randomizer = new Random(); String random = italianList.get(randomizer.nextInt(italianList.size())); System.out.println(random); }//end if jrbItalian isSelected }//end itemStateChanged }//end eventListener }//end TrySomethingNew 

 package TrySource; // TryWindow.java: Display a message on a JPanel import java.awt.FontMetrics; import java.awt.Graphics; import javax.swing.JPanel; public class TryWindow extends JPanel { /** The message to be displayed */ private String message = "Try Something New"; /** The x coordinate where the message is displayed */ private int xCoordinate = 465; /** The y coordinate where the message is displayed */ private int yCoordinate = 40; /** Indicate whether the message is displayed in the center */ private boolean centered; /** The interval for moving the message horizontally and vertically */ private int interval = 10; /** Default constructor */ public TryWindow() { } /** Constructor with a message parameter */ public TryWindow(String message) { this.message = message; } /** Return message */ public String getMessage() { return message; } /** Set a new message */ public void setMessage(String message) { this.message = message; repaint(); } /** Return xCoordinator */ public int getXCoordinate() { return xCoordinate; } /** Set a new xCoordinator */ public void setXCoordinate(int x) { this.xCoordinate = x; repaint(); } /** Return yCoordinator */ public int getYCoordinate() { return yCoordinate; } /** Set a new yCoordinator */ public void setYCoordinate(int y) { this.yCoordinate = y; repaint(); } /** Return centered */ public boolean isCentered() { return centered; } /** Set a new centered */ public void setCentered(boolean centered) { this.centered = centered; repaint(); } /** Return interval */ public int getInterval() { return interval; } /** Set a new interval */ public void setInterval(int interval) { this.interval = interval; repaint(); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); if (centered) { // Get font metrics for the current font FontMetrics fm = g.getFontMetrics(); // Find the center location to display int stringWidth = fm.stringWidth(message); int stringAscent = fm.getAscent(); // Get the position of the leftmost character in the baseline xCoordinate = getWidth() / 2 - stringWidth / 2; yCoordinate = getHeight() / 2 + stringAscent / 2; } g.drawString(message, xCoordinate, yCoordinate); } } 

您需要使Textarea像TextArea textArea1 = new TextArea();一样。 并将其添加到框架中,然后通过调用setText方法在此区域中显示结果,您可以在结果下的该区域中显示所需的信息

private TextArea textArea1; 

//清除变量

 textArea1 = new TextArea();

//将其放在构造函数中

jpResultPanel.add(textArea1);
textArea1.setVisible(true);

将这些行放在//使用按钮AND注册侦听器之后

textArea1.setText(random);

将其放在要打印结果的位置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM