Java 代码赢得';我不去下一行
请帮忙。当我运行这个GUI时,数字会从框架中消失。有没有办法让它转到下一行?另外,如何将滚动条添加到此页面?我想让它垂直和水平滚动Java 代码赢得';我不去下一行,java,swing,user-interface,Java,Swing,User Interface,请帮忙。当我运行这个GUI时,数字会从框架中消失。有没有办法让它转到下一行?另外,如何将滚动条添加到此页面?我想让它垂直和水平滚动 import java.io.*; import java.util.*; import java.lang.*; import java.text.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class prime extends JFrame {
import java.io.*;
import java.util.*;
import java.lang.*;
import java.text.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class prime extends JFrame {
public static void main(String[] args) {
prime frame = new prime();
}
private TextPanel3C panel1;
private JPanel inPanel;
private JTextField inField;
public prime() {
final int width = 500;
final int height = 500;
setSize(width, height);
setTitle("Find Prime Numbers");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1 = new TextPanel3C();
add(panel1, "Center");
inPanel = new JPanel();
inPanel.add(new JLabel("Enter Your Number", SwingConstants.RIGHT));
inField = new JTextField(20);
ActionListener inListener = new TextListener();
inField.addActionListener(inListener);
inPanel.add(inField);
add(inPanel, "South");
setVisible(true);
}
private class TextListener implements ActionListener {
public void actionPerformed(ActionEvent event) {
String message = inField.getText();
inField.setText("");
panel1.setMessage(message);
}
}
class TextPanel3C extends JPanel {
private String message;
private Color backGroundColor;
public TextPanel3C() {
message = "";
backGroundColor = Color.white;
}
public TextPanel3C(String x, Color background) {
message = x;
backGroundColor = background;
}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
int width = getWidth();
int height = getHeight();
setBackground(backGroundColor);
g2.setColor(Color.black);
Font x = new Font("TimesNewRoman", Font.BOLD, 20);
g2.setFont(x);
FontMetrics fm = g2.getFontMetrics(x);
g2.drawString(message, 50, 50);
if (!(message.equals(""))) {
g2.drawString(previousPrime(message), 50, 78);
}
}
public void setMessage(String message) {
if (isPrime(Integer.parseInt(message))) {
this.message = message + " is a prime number.";
} else {
this.message = message + " is not a prime number.";
}
repaint();
}
public boolean isPrime(int num) {
for (int i = 2; i < num; i++) {
if (num % i == 0) {
return false;
}
}
if (num < 2) {
return false;
}
return true;
}
public String previousPrime(String message) {
String totalPrimeNum = "";
int finalNum = Integer.parseInt(message.substring(0, message.indexOf(" ")));
int count = 0;
for (int i = 2; i < finalNum; i++) {
if (isPrime(i)) {
totalPrimeNum += " " + i;
count++;
}
if (count == 10) {
totalPrimeNum += "\n";
count = 0;
}
}
if (isPrime(Integer.parseInt(message.substring(0, message.indexOf(" "))))) {
totalPrimeNum += " " + finalNum;
}
System.out.println(totalPrimeNum);
return totalPrimeNum;
}
}
}
import java.io.*;
导入java.util.*;
导入java.lang.*;
导入java.text.*;
导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类素数扩展JFrame{
公共静态void main(字符串[]args){
素数帧=新素数();
}
私有文本面板3C面板1;
私人JPanel inPanel;
私人内场;
公共素数(){
最终整数宽度=500;
最终内部高度=500;
设置尺寸(宽度、高度);
setTitle(“查找素数”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel1=新文本Panel3C();
添加(面板1,“中间”);
inPanel=新的JPanel();
inPanel.add(新的JLabel(“输入您的号码”,SwingConstants.RIGHT));
内场=新的JTextField(20);
ActionListener inListener=新建TextListener();
inField.addActionListener(inListener);
面板内添加(内场);
添加(在面板中,“南”);
setVisible(真);
}
私有类TextListener实现ActionListener{
已执行的公共无效操作(操作事件){
字符串消息=inField.getText();
内场。塞特xt(“”);
面板1.设置消息(消息);
}
}
类TextPanel3C扩展了JPanel{
私有字符串消息;
私色背景色;
公共文本面板3C(){
message=“”;
背景颜色=Color.white;
}
公共文本面板3C(字符串x,彩色背景){
消息=x;
背景颜色=背景;
}
公共组件(图形g){
超级组件(g);
图形2d g2=(图形2d)g;
int width=getWidth();
int height=getHeight();
挫折背景(背景色);
g2.设置颜色(颜色为黑色);
Font x=新字体(“TimesNewRoman”,Font.BOLD,20);
g2.setFont(x);
FontMetrics fm=g2.getFontMetrics(x);
g2.抽绳(消息,50,50);
if(!(message.equals(“”)){
g2.拉丝(前一条主信息),50,78;
}
}
公共无效设置消息(字符串消息){
if(isPrime(Integer.parseInt(message))){
this.message=message+“是一个素数。”;
}否则{
this.message=message+“不是质数。”;
}
重新油漆();
}
公共布尔值isPrime(int num){
for(int i=2;i
- 将文本写入JTextArea,而不是paintComponent方法李>
- 声明您的JTextArea具有一定数量的行和列,即,
JTextArea myTextArea=newjtextarea(20,40)代码>用于20行和40列
- 不要设置文本区域的大小或首选大小
- 通过调用Append方法向其追加文本:
myTextArea.Append(someText+“\n”)代码>
- 创建一个JScrolLPane并将JTextArea传递到scrollpane的构造函数中,然后将滚动窗格添加到GUI中。e、 例如,
JScrollPane scrollPane=newjscrollpane(myTextArea)代码>。然后再次将滚动窗格添加到GUI,而不是JTextArea。请注意,实际上并没有将JTextArea添加到JScrollPane,而是添加到scrollpane的视口
- 将文本写入JTextArea,而不是paintComponent方法李>
- 声明您的JTextArea具有一定数量的行和列,即,
JTextArea myTextArea=newjtextarea(20,40)代码>用于20行和40列
- 不要设置文本区域的大小或首选大小
- 通过调用Append方法向其追加文本:
myTextArea.Append(someText+“\n”)代码>
- 创建一个JScrolLPane并将JTextArea传递到scrollpane的构造函数中,然后将滚动窗格添加到GUI中。e、 例如,
JScrollPane scrollPane=newjscrollpane(myTextArea)代码>。然后再次将滚动窗格添加到GUI,而不是JTextArea。请注意,实际上并没有将JTextArea添加到JScrollPane,而是添加到scrollpane的视口
添加(面板1,“中间”)
,我不知道你在哪里找到过这样的代码,但我想把那个教程去掉,因为它不是教基础知识的。不要使用硬编码字符串。API提供了一个字段供您使用<代码>添加(面板1,BorderLayout.CENTER)代码>添加(面板1,“中间”),我不知道你在哪里找到过这样的代码,但我想把那个教程去掉,因为它不是教基础知识的。不要使用硬编码字符串。API提供了一个字段供您使用<代码>添加(面板1,BorderLayout.CENTER)代码>。在我的代码中,我应该把它放在哪里?