我是java摇摆新手。其实我有以下情况:
Case1 : “the collection was guaranteed.i'm sure it is”
Case2 : the collection was guaranteed.i'm sure it is
Case2 : the collection was guaranteed...i'm sure it is
这些情况我想用摇摆窗来反映。哪些会接受这些情况。
条件:
在case1
中,因为文本被“”包围,所以它不应该做任何事情。
第二种情况,因为数据没有被“”包围,所以“。”应突出显示(如果“。”为单个)黄色。
在第三种情况下正弦“。”之前或之后是另一个“。”应该保持原样。
有人建议我这可以用波动来完成,请给我一个关于如何继续的想法。在这里,我想要一个表格,我们可以粘贴这个文本和一个名为“清洁”的按钮,一旦被击中,黄色突出显示应该出现在句号上。还请给我一些关于秋千的好参考。我尝试的内容如下。这并没有完全完成,因为我不知道如何启动它以及如何继续
import java.awt.Color;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/**
* @author u0138039
*/
public class NewJPanel extends javax.swing.JPanel {
/**
* Creates new form NewJPanel
*/
public NewJPanel() {
initComponents();
createGUI();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jFrame1 = new javax.swing.JFrame();
jScrollPane1 = new javax.swing.JScrollPane();
jTextArea1 = new javax.swing.JTextArea();
jButton1 = new javax.swing.JButton();
jScrollPane2 = new javax.swing.JScrollPane();
jTextArea2 = new javax.swing.JTextArea();
javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane());
jFrame1.getContentPane().setLayout(jFrame1Layout);
jFrame1Layout.setHorizontalGroup(
jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 400, Short.MAX_VALUE)
);
jFrame1Layout.setVerticalGroup(
jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 300, Short.MAX_VALUE)
);
jTextArea1.setColumns(20);
jTextArea1.setRows(5);
jScrollPane1.setViewportView(jTextArea1);
jButton1.setText("Clean");
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
jTextArea2.setColumns(20);
jTextArea2.setRows(5);
jScrollPane2.setViewportView(jTextArea2);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1)
.addGroup(layout.createSequentialGroup()
.addGap(472, 472, 472)
.addComponent(jButton1)
.addContainerGap(579, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane2))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 367, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 398, Short.MAX_VALUE)
.addContainerGap())
);
}// </editor-fold>
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
hilit = new DefaultHighlighter();
jTextArea2=jTextArea1.getText();
Scanner scan=new Scanner(jTextArea1.getText());
System.out.println("enter some text \n");
String line= scan.nextLine();
if(line.contains("\""))
{
System.out.println("Notining to do");
System.exit(0);
}
int dot1= line.indexOf(".");
int dot2=line.lastIndexOf(".");
if(dot1==dot2)
{
jTextArea2.setText(line);
try {
hilit.addHighlight(dot1,dot1+1, painter);
} catch (BadLocationException ex) {
Logger.getLogger(NewJPanel.class.getName()).log(Level.SEVERE, null, ex);
}
jFrame1.setVisible(true);
}
if(dot1==dot1+dot2 || dot1==dot2-dot1)
{
JOptionPane.showMessageDialog(jFrame1,"2 dots");
}
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JFrame jFrame1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
private javax.swing.JTextArea jTextArea2;
// End of variables declaration
private Highlighter hilit=null;
private final Highlighter.HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.yellow);
private void createGUI() {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
由于
答案 0 :(得分:1)
没有太多的摇摆经验,最简单的方法是使用HTML。
使用JTextPane(或JEditorPane)。
textPane.setContentType("text/html");
如果按代码设置,请确保字符串以"<html>"
开头:
textPane.setText("<html>“the collection was guaranteed.i'm sure it is”");
现在您可以使用HTML进行标记,着色等操作:
"~~~<span style='background-color:#ffff00'>.</span>~~~"
文档更改侦听器或键侦听器可能每次都重新添加标记。
Document doc = textPane.getDocument();
String plainText = doc.getText(0, doc.getLength());
对于逻辑正则表达式可以使用,i.a。所谓的前瞻。另外一章。
答案 1 :(得分:1)
我做了一个简短的例子。
Highlighter
突出显示'。'
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultHighlighter;
import javax.swing.text.Highlighter;
/**
*
* @author rohan
*/
public class TestPeriodHighlight {
private JFrame frame;
private JPanel panel;
private JTextArea jTextArea;
private JButton butt;
private Highlighter hilit=null;
private final Highlighter.HighlightPainter painter = new DefaultHighlighter.DefaultHighlightPainter(Color.yellow);
TestPeriodHighlight () throws BadLocationException
{
createGUI();
process();
}
public void process() throws BadLocationException
{
hilit = new DefaultHighlighter();
jTextArea.setHighlighter(hilit);
Scanner scan=new Scanner(System.in);
System.out.println("enter some text \n");
String line= scan.nextLine();
if(line.contains("\""))
{
System.out.println("Notining to do");
System.exit(0);
}
int dot1= line.indexOf(".");
int dot2=line.lastIndexOf(".");
if(dot1==dot2)
{
jTextArea.setText(line);
hilit.addHighlight(dot1,dot1+1, painter);
frame.setVisible(true);
}
}
public void createGUI()
{
butt=new JButton("clear");
frame=new JFrame();
frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);
panel=new JPanel();
jTextArea=new JTextArea(20,20);
panel.add(jTextArea);
panel.add(butt);
butt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae)
{
jTextArea.setText("");
}
});
frame.add(panel);
frame.pack();
frame.setVisible(false);
}
public static void main(String[] args)
{
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try
{
new TestPeriodHighlight();
} catch (BadLocationException ex) {
Logger.getLogger(TestPeriodHighlight.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
);
}
}